Eu tenho um arquivo chamado:f{number}.ext
Em outro diretório existe uma lista de diretórios:
- 001
- 002
- 003
- ....
Cada um desses diretórios contém uma lista de arquivos:
- f001.ext
- f002.ext
- ...
Os nomes dos arquivos são repetidos em cada diretório, mas são arquivos diferentes. Preciso encontrar este arquivo ( f{number}.ext
) na referida lista de diretórios e obter o nome do diretório raiz - por exemplo 003
- ou imprimir uma mensagem se o arquivo não for encontrado.
Posso usar fdupes
para esta operação?
Responder1
Você poderia usar este script bash:
#!/bin/bash
for iNumb in '001' '002' '003' '004' '005'; do
myFile=`ls */f${iNumb}.ext 2>&1`
if [ "${myFile:0:2}" == "ls" ]
then
echo "File f${iNumb}.ext: File not found"
else
echo "File f${iNumb}.ext:" `dirname ${myFile}`
fi
done
- O
2>&1
trata da mensagem de erro de ls quando o arquivo não é encontrado (por exemplols: cannot access */f005.ext: No such file or directory
). - O
if
teste se a stringmyFile
começa com anls
(então tivemos um erro) ou não (então encontramos um arquivo). dirname
retorna o diretório.basename
retornaria o nome do arquivo.