Snažím sa nájsť súbory, ktoré existujú v jednom adresári, ale nie v druhom, skúšal som použiť tento príkaz:
diff -q dir1 dir2
Problém s uvedeným príkazom je, že nájde súbory v adresári dir1
, ale nie v adresári dir2
, ako aj súbory v adresári dir2
, ale nie v adresári dir1
,
Snažím sa nájsť iba súbory v dir1
, ale nie v dir2
.
Tu'je malá ukážka toho, ako vyzerajú moje údaje
dir1 dir2 dir3
1.txt 1.txt 1.txt
2.txt 3.txt 3.txt
5.txt 4.txt 5.txt
6.txt 7.txt 8.txt
Ďalšia otázka, ktorá ma napadá, je, ako môžem nájsť súbory v dir1
, ale nie v dir2
alebo dir3
jedným príkazom?
diff -r dir1 dir2 | grep dir1 | awk '{print $4}' > difference1.txt
Vysvetlenie:
diff -r dir1 dir2
zobrazí, ktoré súbory sú len v dir1 a ktoré len v dir2, a tiež prípadné zmeny súborov prítomných v oboch adresároch.
diff -r dir1 dir2 | grep dir1
zobrazí, ktoré súbory sa nachádzajú len v adresári dir1
awk
na vypísanie iba názvu súboru.
Ďalším veľmi užitočným nástrojom na porovnávanie adresárov je zásuvný modul DirDiff pre vim.
vim -c "DirDiff dir1 dir2"
Nielenže vypíše, ktoré súbory sa v adresároch líšia, ale tiež vám umožní skontrolovať/zmeniť pomocou vimdiff súbory, ktoré sa líšia.