W wierszu poleceń systemu Linux chciałbym skopiować (bardzo duży) zestaw .txt
plików z jednego katalogu (i jego podkatalogów) do innego.
Potrzebuję struktury katalogów, aby pozostać nienaruszona, i muszę zignorować pliki oprócz tych, które kończą się na .txt
.
Odpowiedzi:
Aby to zrobić, możesz użyć find i cpio
źródło
źródło
.
pofind
. Również w systemie macOS 10.13.1 działało:find . -type f -name "*.txt" -exec install -v {} /dest/path/{} \;
Inne podejście
find . -name '*.txt' -exec rsync -R {} path/to/dext \;
źródło
find . -iname '*.txt' -exec rsync -Rptgon {} path/to/dext \;
dopasowanie bez rozróżniania wielkości liter oraz posiadałem uprawnienia i uprawnienia preservera.Najłatwiejszy dla mnie sposób:
Jednym z haczyków jest przejście do katalogu „pożądanego”, aby „ścieżka nadrzędna” była poprawna.
Upewnij się także, że w bash włączyłeś rekurencyjne globusy:
źródło
co powiesz najpierw na to
następnie przejdź do nowego folderu i uruchom
Lub tylko
Edycja: ok chcesz jedno polecenie, które filtruje (nie testowałem tego, ponieważ mój system nie ma
cpio
polecenia!). Oto, gdzie go znalazłem: http://www.gnu.org/software/findutils/manual/html_mono/find.html#Copying-A-Subset-of-FilesProszę przetestować ten pierwszy, bo nie próbowałem jeszcze. Gdyby ktoś to zweryfikował, byłoby świetnie.
źródło
0
in-pmd0
i włożyć-print0
do końcafind
polecenia (tuż przed|
).Próbowałem zrobić to samo na macOS, ale żadna z opcji tak naprawdę nie działała dla mnie. Aż odkryłem
ditto
.Musiałem skopiować wiele plików .wav i pomijać pliki wideo ... Oto co wymyśliłem:
find . -type f -iname "*.wav" -ls -exec ditto {} /destination/folder/{} \;
find .
- Uruchamia wyszukiwanie w bieżącym folderze. upewnij się,cd /source/folder
zanim zaczniesz-type f
- Określa tylko wyszukiwanie plików-iname "*.wav"
- Oznacza to, że należy rozróżnić wielkość liter * .wav-ls
- Pokazuje plik, nad którym pracuje. W przeciwnym razie nic nie pokazuje.-exec ditto {} /destination/folder/{} \;
- Wykonuje całą pracę kopiowania i tworzenia plików z tym samym drzewem katalogowym.źródło
Przejdź do katalogu:
Jest trochę bardziej prosty i potężny, jeśli zarządzasz wyrażeniami regularnymi.
źródło
Przejdź do katalogu:
Będziesz musiał przejść do każdego folderu w katalogu, ale jest to lepsze niż większość opcji, które widziałem do tej pory.
źródło