Mam listę plików, które chcę sprawdzić, czy istnieją w moim systemie plików. Myślałem o zrobieniu tego za pomocą find
:
for f in $(cat file_list); do
find . -name $f > /dev/null || print $f
done
(za pomocą zsh
), ale to nie działa, ponieważ find
wydaje się, że kończy działanie 0
niezależnie od tego, czy znajdzie plik. Chyba mogę przekazać go za pośrednictwem innego testu, który sprawdza, czy find
produkuje żadnego wyjścia (surowy, ale skuteczne byłoby wymienić > /dev/null
z |grep ''
), ale to uczucie za pomocą troll złapać kozę (inne narodowości mogą powiedzieć coś o młotami i orzechami ).
Czy istnieje sposób, aby przekonać find
mnie do podania użytecznej wartości wyjściowej? A przynajmniej żeby uzyskać listę tych plików, których nie znaleziono? (Mogę sobie wyobrazić, że to drugie może być łatwiejsze dzięki sprytnemu wyborowi logicznych połączeń, ale zawsze staram się to rozgryźć.)
Tło / Motywacja: Mam „główną” kopię zapasową i chcę sprawdzić, czy niektóre pliki na mojej lokalnej maszynie istnieją na mojej głównej kopii zapasowej przed ich usunięciem (aby utworzyć trochę miejsca). Zrobiłem więc listę plików, ssh
edytując je na komputerze głównym, i wtedy nie mogłem znaleźć najlepszego sposobu na znalezienie brakujących plików.
locate
nie pokazuje aktualnego stanu systemu plików, może to być dzień, a nawet tydzień. Jest to odpowiednie jako baza do testowania kopii zapasowych.
locate
.