【发布时间】:2012-05-19 14:15:57
【问题描述】:
我可以使用“重命名”命令将缺少的字符添加到当前目录中的所有文件名,如下所示:
echo "Renaming files..."
rename -v "s/^abcd124(.+)/abcd1234$1/" *.wav.gz;
echo "Done."
但是,我想对当前目录和它的所有子目录执行此操作。我试过这个:
echo "Renaming files..."
for dir in $(find ./ -type d); do
rename -v "s/^$dir\/abcd124(.+)/$dir\/abcd1234$1/" *.wav.gz;
done;
echo "Done."
但是,如果 $dir 变量包含以下任何特殊字符:{}[]()^$.|*+?\,则它们无法使用 \ 正确转义,我的脚本将失败。
解决此问题的最佳方法是什么?另外,你们觉得用awk来解决这个问题怎么样(优点/缺点?)
【问题讨论】:
标签: bash shell command-line rename subdirectory