我需要帮助创建一个脚本,该脚本将通过指定目录并重命名与名称匹配的文件夹。在我的情况下,一些(/ Users /).bak附加到他们,我想删除。
提前感谢您提供的任何帮助。
答案 0 :(得分:1)
find /Users -type d -iname '*.bak' | while read d; do
mv "$d" "${d%.bak}"
done
请记住将文件名放在引号中,以防名称中有空格。
${var%stuff}
:从结尾处移除glob stuff
${var#stuff}
:从前面删除glob stuff
这两个习惯用法在循环中使用时非常强大,适用于任何Bourne shell变体(dash,bash,ksh等)
答案 1 :(得分:0)
删除名为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
查找以.bak扩展名-type d
以某种方式命名的文件夹-iname '*.bak'
,并将这些名称移至xargs
,收集名称并将其删除rmdir
或rm -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