Mam całą moją muzykę w folderze /media/kalenpw/MyBook/Music/ABunchOfOtherFoldersWithFilesInside
. Chcę skopiować wszystkie pliki MP3, /media/kalenpw/HDD/Music
więc użyłem:
cp -R /media/kalenpw/MyBook/Music/*.mp3 /media/kalenpw/HDD/Music
jednak to tylko skopiowało pliki mp3 z głównego katalogu muzycznego i nie otworzyło żadnego z podkatalogów wykonawcy i nie skopiowało tych plików.
Miałem wrażenie, -R
że rekursywnie skopiuję wszystkie pliki. Jak mogę osiągnąć wspomniany cel?
-iname
zamiast-name
na wypadek, gdyby jakieś pliki się kończyły.MP3
.W szczególności wspomniałeś o plikach / katalogach, które chcesz skopiować, używając
*.mp3
np. Dowolnej nazwy pliku / katalogu kończącej się na.mp3
.Więc każdy plik kończy się
.mp3
w/media/kalenpw/MyBook/Music/
katalogu i podobnie, każdy katalog kończące się.mp3
w/media/kalenpw/MyBook/Music/
zostaną skopiowane, rekurencyjnie. Jeśli nie ma takiego dopasowanego pliku / katalogu, nic nie zostanie skopiowane.Teraz, aby skopiować wszystkie
.mp3
pliki z/media/kalenpw/MyBook/Music/
recursivley do katalogu/media/kalenpw/HDD/Music/
:Używanie
bash
:Używanie
find
:źródło
Możesz także użyć cpr :
Zauważ, że bez
-p
cpr zachowa pełne ścieżki katalogów na skopiowanych nazwach plików.-r
można użyć (zamiast-p
) do zachowania ścieżki w „/media.../Music/”.Zadba również o
cpr
to, aby żaden plik nie został nadpisany, dodając liczbę zaczynającą się od „0001” do kopiowanej powtarzanej nazwy pliku.źródło
Załóżmy, że masz kilka
.docx
,.mp3
,.txt
i.xlsx
plików przechowywanych w tej strukturze katalogów:... 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:
... a następnie uruchom to polecenie:
W przypadku, gdy nie chcesz, aby zachować drzewa katalogów ze źródła w miejscu przeznaczenia, zamiast tego polecenia (po uruchomieniu
cd /files
):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
).źródło
find /source/dir -iname '*.mp3' | cpio -pdm /home/me/music/
, utworzy / home / me / music / source / dir, a pliki zostaną skopiowane do tej nowej lokalizacji.