Procurando por arquivos ausentes em um diretório de arquivos via entradas curinga [duplicado]

0

Atualmente tenho um diretório com 100 arquivos de 4 tipos, para um total de 400 arquivos. Eu gostaria de encontrar quais estão faltando. Meu script atual é:

for((i=1; i<=100; i++)); do name="File_Type_1_${i}.RData"; 
[[ ! -e "$name" ]] && echo "missing $name"; done

for((i=1; i<=100; i++)); do name="File_Type_2_${i}.RData"; 
[[ ! -e "$name" ]] && echo "missing $name"; done

for((i=1; i<=100; i++)); do name="File_Type_3_${i}.RData"; 
[[ ! -e "$name" ]] && echo "missing $name"; done

for((i=1; i<=100; i++)); do name="File_Type_4_${i}.RData"; 
[[ ! -e "$name" ]] && echo "missing $name"; done

que é chato ter que correr 4 vezes. Existe uma maneira de executar tudo de uma vez? O

    
por user321627 03.11.2018 / 00:28

1 resposta

3
ls -l File_type_{1..4}_{1..100}.RData > /dev/null

Este comando usa a expansão de chave para gerar todos os 400 nomes de arquivos, então pede a ls para listá-los, apenas nós imediatamente redirecionamos a saída para / dev / null, soltando-a. ls irá reclamar dos arquivos perdidos para o stderr; por exemplo:

ls: cannot access 'File_type_1_99.RData': No such file or directory
ls: cannot access 'File_type_3_42.RData': No such file or directory

Aí estão os arquivos perdidos!

    
por 03.11.2018 / 00:32