Como faço para verificar se há arquivos ~ application / x-trash?

1

Eu tenho este script bash simples para verificar os arquivos ~ application / x-trash dentro de um diretório e seus subdiretórios.

Funciona bem, mas ecoa em branco . ~, o que parece ser inofensivo, mas irritante. Como evito isso?

Script

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

Para um diretório subdiretório, se não houver um arquivo ~ no diretório, no terminal eu recebo assim mesmo:

file to be removed: /var/www/html/mypath/../../../dir/*.*~

    
por mario 19.08.2017 / 15:58

2 respostas

2

Supondo que você só quer encontrar qualquer arquivo cujo nome corresponda a *~ ou .*~ (geralmente são arquivos de backup deixados por um editor), então esta única invocação de find fará isso para você:

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

Você pode inserir um -maxdepth 6 se achar que faz sentido:

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

Para excluir os arquivos encontrados, basta adicionar -delete ao final do comando.

Quando o shell não pode expandir um padrão de globalização de nomes de arquivos para uma lista de nomes, ele é mantido como um padrão não expandido. É por isso que você obtém o resultado obtido com seu código.

    
por 19.08.2017 / 16:27
0

o seguinte faz o que eu preciso:

#!/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
    
por 20.08.2017 / 13:02