我有这个简单的 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