tor*_*inx 6 bash shell command-line rename subdirectory
我可以使用'rename'命令将缺少的字符添加到当前目录中的所有文件名,如下所示:
echo "Renaming files..."
rename -v "s/^abcd124(.+)/abcd1234$1/" *.wav.gz;
echo "Done."
Run Code Online (Sandbox Code Playgroud)
但是,我想为当前目录及其所有子目录执行此操作.我试过这个:
echo "Renaming files..."
for dir in $(find ./ -type d); do
rename -v "s/^$dir\/abcd124(.+)/$dir\/abcd1234$1/" *.wav.gz;
done;
echo "Done."
Run Code Online (Sandbox Code Playgroud)
但是,如果$dir变量包含任何这些特殊字符:{}[]()^$.|*+?\那么它们不能正确转义\并且我的脚本失败.
解决这个问题的最佳方法是什么?另外,你们有什么想法awk用来解决这个问题(优点/缺点?)
小智 6
你也可以尝试:
find . -name "*.wav.gz" | xargs rename -v "s/abcd124*/abcd1234$1/"
Run Code Online (Sandbox Code Playgroud)
它适用于具有"xargs"命令的较新的Unix系统.请注意,我稍微编辑了正则表达式.
| 归档时间: |
|
| 查看次数: |
4464 次 |
| 最近记录: |