Comparando arquivos de diretório com base no nome do arquivo

0

Atualmente, tenho um diretório de arquivos com a seguinte aparência:

abcd.txt
abcd_.txt
qrst.txt
qrst_.txt
wxyz.txt
wxyz_.txt

Em teoria, todas as linhas em abcde_.txt devem estar contidas em abcd.txt, e todas as linhas em qrst_.txt devem estar contidas em qrst.txt, e assim por diante. Embora não tenha nenhum problema em comparar dois arquivos para testar isso individualmente, estou tentando encontrar uma maneira mais eficiente de fazer isso em todo o diretório.

Em um caso como este, se eu tivesse muitos pares de arquivos, mas não sabia de antemão com que sequência de letras cada um começaria, há uma maneira de percorrer e processar cada conjunto de dois arquivos relacionados de cada vez?

    
por Ethan 09.10.2018 / 15:31

2 respostas

2

Na lista de nomes, você pode encontrar *_.txt . A partir do nome, remova _.txt e adicione .txt . Compare os dois arquivos.

for f1 in *_.txt; do
    f2="${f1%_.txt}.txt"
    compare "$f1" "$f2"
done
    
por 09.10.2018 / 15:39
0

Se você já sabe que para cada arquivo file.txt , existe um arquivo file_.txt , usarei o _ para diferenciá-los

Um código como este deve funcionar:

files=('ls | grep -v "_"')
for f1 in ${files[@]}
do
     f2='echo $f1 | sed -r 's/.txt/_.txt/g''
     diff $f1 $f2
done
    
por 09.10.2018 / 17:07