如何递归访问和删除特定文件夹中sh中有空格的所有文件?

时间:2014-04-04 13:48:53

标签: linux shell sh

我目前正在使用

p=` ls -l -p $MYDIR | egrep '^d' | awk '{print $9}' 

获取所有文件夹然后

for dirs in ${p}
do

用于递归打开文件夹。它适用于没有空格的文件夹名称,但对于带空格的文件夹名称,文件夹名称的第二部分被选为单独的文件夹。

2 个答案:

答案 0 :(得分:1)

迭代$MYDIR下的所有目录,

 find "$MYDIR" -type d |
 while read dir; do
    printf '%s\n' "Deleting files in <$dir>"
    rm -f "$dir"/*
 done

请注意,在使用dir变量时,必须对其进行双引号,以防止shell在空格中执行分词

如果您不需要将$MYDIR作为练习,则跳过{{1}}。

答案 1 :(得分:0)

您可以使用: -

find /opt/test  -type d ! -name "test" -exec echo rm -rf \"{}\" \; | sh

find -type d ! -name "." -exec echo rm -rf \"{}\" \; | sh