所以我有一个名为testdir
的目录,我想从该目录中的文件中删除文件名中的下划线。
我尝试使用此命令
find testdir -type f -exec ls {} \; | sed 's/_*//'
它将输出没有下划线的文件名,但不会永久删除下划线。有谁可以帮助我?
谢谢!
答案 0 :(得分:0)
如果您只是循环遍历目录中的文件,请使用简单的循环:
while IFS= read -r file
do
echo mv "$file" "${file//_/}" #once you are sure it works, remove the echo!
done < <(find -type f -name "*_*")
这将为while
循环提供find
命令的输出。然后,使用${var//_/}
删除名称中的所有_
。
为什么你的方法不起作用?
因为你在说
find ... -exec ls {} \; | sed '...'
也就是说,您正在找到一些内容,然后使用sed
更改输出。也就是说,文件本身没有任何操作。
答案 1 :(得分:0)
这可能会对你有所帮助 找到testdir -type f |重命名&#39; s / _ //&#39;
此致