folder_1
./a20160606_000000_000021.txt 5KB
./a20160606_000000_000062.txt 5KB
./a20160606_000000_000531.txt 5KB
./a20160606_000000_004521.txt 5KB
./a20160606_000000_003211.txt 9KB
./a20160606_000000_009451.txt 9KB
./b20160606_000000_000001.txt 4KB
./b20160606_000000_000311.txt 6KB
./b20160606_000000_000632.txt 8KB
./b20160606_000000_000008.txt 9KB
./b20160606_000000_000034.txt 12KB
./b20160606_000000_000245.txt 12KB
./b20160606_000000_000333.txt 12KB
folder_2
./a20160607_000000_000001.txt 9KB
./a20160607_000000_000002.txt 9KB
./a20160607_000000_000311.txt 9KB
./a20160607_000000_000500.txt 9KB
./a20160607_000000_001121.txt 9KB
./a20160607_000000_004891.txt 9KB
./b20160607_000000_000021.txt 5KB
./b20160607_000000_000065.txt 5KB
./b20160607_000000_000091.txt 5KB
./b20160607_000000_000134.txt 12KB
./b20160607_000000_000521.txt 12KB
./b20160607_000000_001111.txt 12KB
Mam te foldery, każdy folder zawiera pliki powyżej. Rozmiar każdego pliku jest wskazany po prawej stronie (folder_1 i folder_2 znajdują się w tym samym folderze). Moje pytanie brzmi: jak usunąć te zduplikowane pliki, find
a plik musi pozostać musi być największy dla każdego pliku. Dane wyjściowe muszą być takie:
folder_1
./a20160606_000000_009451.txt 9KB
./b20160606_000000_000333.txt 12KB
folder_2
./a20160607_000000_000001.txt 9KB
./b20160607_000000_001111.txt 12KB
find folder_1 -type f
), Aby wyjaśnić pytanie../a20160606_000000_009451.txt & ./b20160606_000000_000333.txt
pliki w folderze 1?Odpowiedzi:
Aby ściśle odpowiedzieć na twoje pytanie, nie masz duplikatów plików opartych na nazwie pliku.
Jeśli chcesz zachować największe pliki na podstawie pierwszej części nazwy pliku, możesz użyć następującego
awk
skryptu, aby uzyskać nazwy plików (wraz z ich rozmiarami), które nie są największe na podstawie prefiksu, aż do pierwszego podkreślenia (a20160606, a20160607, itp.):Aby uzyskać listę nazw (i ich rozmiarów) znalezionych wartości maksymalnych:
Prawdopodobnie są na to łatwiejsze sposoby, ale może to pomoże w uzyskaniu listy plików do usunięcia.
źródło