Как проверить файлы ~ 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 

Для каталога subdirectory, если в каталоге нет файла, на терминале я все равно получаю:

файл для удаления: /var/www/html/mypath/../../../dir/*.*~

Предполагая, что вы просто хотите найти файл, имя которого соответствует либо *~ или .*~ (Обычно это файлы резервных копий, оставленные редактором), то этот единственный вызов для 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 в конец команды.


Когда оболочка не может развернуть шаблон глобирования имени файла в список имен, он сохраняется как нерасширенный шаблон. Вот почему вы получаете результат с кодом.

следующее делает то, что мне нужно:

 #!/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