2012-09-17 13 views
9

Szukam sposobu z wiersza polecenia, aby dotknąć każdego pliku w katalogu (i podkatalogach) z powodu mojego błędu, zsynchronizowane repo minowało trochę poza krok na moich maszynach rozwojowych.Rekursywne dotknięcie, aby naprawić synchronizację między komputerami

Przez jakiś nieprzyjemny voodoo udało mi się przywrócić go do stanu czystego na jednej maszynie, zanim zrobię następną synchronizację, chcę nadać priorytet wszystkiemu na tym komputerze.

Czy istnieje łatwy sposób na dotknięcie wszystkich plików?

A może lepiej przeprowadzić ręczną synchronizację katalogu?

(używam skrzynki referencyjnej do synchronizacji dla porównania)

Odpowiedz

15

Można użyć find wraz z xargs dotykać każdy plik w bieżącym lub w określonym katalogu lub poniżej:

find . -print0 | xargs -0 touch 

w bieżącym katalogu . Dla określonego katalogu:

find /path/to/dir -print0 | xargs -0 touch 

Opcja -print0 do find wraz z opcją xargs-0 zrobić komenda wytrzymała do nazwy plików ze spacjami uzależniając separatorem NULL.

Edit:

Jak Jeremy J Starchar mówi w komentarzu, powyższe jest odpowiedni tylko wtedy, gdy find i xargs są częścią toolchain GNU. Jeśli jesteś na systemie withour narzędzi GNU można użyć:

find . -exec touch {} \; 

Edycja przez dcgregorya:

Mając to zrobić przed bardzo dużym zbiorze danych Znalazłem tego polecenia, aby być (dużo) szybciej.

find ./ -type d -print0 | xargs -I{} -0 bash -c "touch {}/*" 

Limity znajdują się w poszukiwaniu folderów, a następnie dotykają folderu/*.

+2

Albo można po prostu użyć '-execdir' działania:' znaleźć. -execdir touch '{}' \; ' – chepner

+0

Należy zauważyć, że' -print0' i xarg '-0' są rozszerzeniami GNU i mogą nie być obecne w łańcuchach narzędzi innych niż GNU. 'znajdź. -exec touch {}; 'jest wolniejszy bardziej kompatybilny w razie potrzeby. –

0

To jest rozwiązanie mojego bezpośredniego problemu z dotknięciem wszystkich plików, niezależnie od tego, czy będzie działać ze skrzynką domyślną.

W katalogu głównym w pytaniu

find . -print -exec touch {} \; 

(druk jest obcy, ale może to być pomocne dla sprzężenia zwrotnego)

Powiązane problemy