使用 BASH 重命名具有特定扩展名的文件夹



我需要帮助创建一个脚本,该脚本将遍历指定的目录并重命名与名称匹配的文件夹。就我而言,有些附加了 (/Users/) .bak,我希望将其删除。

提前感谢您提供的任何帮助。

find /Users -type d -iname '*.bak' | while read d; do
mv "$d" "${d%.bak}"
done

请记住将文件名放在引号中,以防名称中有空格。

${var%stuff}: 从末端
取下球stuff${var#stuff}: 从正面取下球stuff

这两个习语,当在循环中使用时,非常强大,并且适用于任何 Bourne shell 变体(dash、bash、ksh 等)。

删除名为"Users "的子目录中具有.bak扩展名的文件夹

find /Users -type d -iname '*.bak' -print0 | xargs -0 rmdir

如果文件夹为空,则必须改用rm -rf

find /Users -type d -iname '*.bak' -print0 | xargs -0 rm -rf

find查找-type d以某种方式命名.bak扩展名-iname '*.bak'并将这些名称交给xargs,后者收集名称并将其删除rmdirrm -rf

更新:

若要删除扩展名(重命名文件夹),可以使用while read循环并mv

find /Users -type d -iname '*.bak' | while read d; do
t=$(echo $d | sed -e 's/.bak$//')
mv $d $t
done

相关内容

  • 没有找到相关文章

最新更新