Załóżmy, że masz kilka .docx
, .mp3
, .txt
i .xlsx
plików przechowywanych w tej strukturze katalogów:
/files/
/files/dir1/
/files/dir1/dir11/
/files/dir1/dir12/
/files/dir1/dir13/
/files/dir2/
/files/dir3/
/files/dir3/dir31/
/files/dir3/dir32/
/files/dir4/
/files/dir5/
/files/dir51/
/files/dir52/
/files/dir53/
/files/dir54/
... i chcesz powrócić do wszystkich takich katalogów w celu skopiowania wszystkich znalezionych .mp3
plików, /home/me/music/
ale nie chcesz zachować takiego drzewa katalogów w miejscu docelowym (tzn. chcesz, aby wszystkie znalezione .mp3
pliki zostały skopiowane /home/me/music/
zamiast skopiowane do odpowiednich katalogów taki jak /home/me/music/dir1/
, /home/me/music/dir1/dir11/
i tak dalej).
W takim przypadku najpierw uruchom terminal w powłoce (bash), aby uzyskać dostęp do katalogu głównego wyszukiwania plików:
cd /files
... a następnie uruchom to polecenie:
for i in `find . -iname '*.mp3'`; do cp $i /home/me/music/; done
W przypadku, gdy nie chcesz, aby zachować drzewa katalogów ze źródła w miejscu przeznaczenia, zamiast tego polecenia (po uruchomieniu cd /files
):
find . -iname '*.mp3' | cpio -pdm /home/me/music/
Na powyższych poleceń, wyszukiwanie jest wielkość liter (tj mecze .mp3
, .MP3
, .mP3
i .Mp3
). Użyj -name
zamiast -iname
jeśli chcesz wyszukiwania być rozróżniana (np używając -name
do .mp3
łańcucha znaków dopasuje pliki kończące się .mp3
ale nie tych, kończąc .MP3
, .mP3
ani .Mp3
).
-iname
zamiast-name
na wypadek, gdyby jakieś pliki się kończyły.MP3
.