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
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?
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
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
Tags bash regular-expression