我有一个名为
windows
的目录,其中包含名称包含空格的文件。例如,文件可能名为 'abpk gawt yibp-877'
。我想通过用下划线替换文件名中的空格来纠正这个问题_
。例如,名称为 'abpk gawt yibp-877'
的文件应变为 'abpk_gawt_yibp-877'
。我需要更正 windows
目录中的所有文件名。
限制:
xargs
和 sh
命令。我已经尝试了以下命令,但它不遵守约束,因为我无法使用
${}
:
find windows -type f | grep -E '.... .... ....-[0-9A-Za-z]{1,3}' | xargs -I {} bash -c 'mv "{}" "${1// /_}"' sh {} \;
我正在寻找一种尊重上述所有限制的解决方案。任何帮助或指导将不胜感激。谢谢!
使用内置
-regex
条件来匹配文件名,而不是通过管道传输到 grep
。
使用内置的
-exec
运算符执行 bash
命令来执行文件名替换和 mv
命令。
find windows -type f -regex '/.{4} .{4} .{4}-[0-9A-Za-z]{1,3}$' -exec bash -c 'mv "$1" "${1// /_}"' {} {} \;