如何检查 ~ application/x-trash 文件

如何检查 ~ application/x-trash 文件

我有这个简单的 bash 脚本来检查目录及其子目录中的 ~ application/x-trash 文件。

它工作正常,但回声为空〜也是,这似乎无害但令人讨厌。我该如何避免这种情况?

脚本

#!/bin/sh
cd '/var/www/html/mypath/'
for d in $(find '/var/www/html/mypath/' -maxdepth 6 -type d)
do

echo $d
for f in  $d'/'*.*~; 
    do  FILE=$f;
        echo 'file to be removed:  '$FILE
    done
done

对于子目录 dir,如果 dir 中没有 ~ 文件,在终端我无论如何都会得到:

要删除的文件:/var/www/html/mypath/../../../dir/*.*~

答案1

假设您只想查找名称与*~或匹配的任何文件.*~(这些通常是编辑器留下的备份文件),那么这个单一find调用将为您做到这一点:

find /var/www/html/mypath/ -type f \( -name '*~' -o -name '.*~' \) -print 

-maxdepth 6如果您认为有意义,可以在其中插入:

find /var/www/html/mypath/ -maxdepth 6 -type f \( -name '*~' -o -name '.*~' \) -print 

要删除找到的文件,只需添加-delete到命令末尾即可。


当 shell 无法将文件名通配模式扩展为名称列表时,它将保留为未扩展模式。这就是为什么你会得到你的代码所得到的结果。

答案2

以下内容满足我的需要:

#!/bin/sh

cd '/var/www/html/mypath/'

for i in `find '/var/www/html/mypath/' \( -name '*~' -o -name '.*~' \) -type f`; do

    echo 'file to be removed:  '$i
    mv $i   '/var/www/html/trashTest'
done

相关内容