J'ai toute ma musique dans un dossier /media/kalenpw/MyBook/Music/ABunchOfOtherFoldersWithFilesInside
. Je veux copier tous les mp3 /media/kalenpw/HDD/Music
, j'ai donc utilisé:
cp -R /media/kalenpw/MyBook/Music/*.mp3 /media/kalenpw/HDD/Music
toutefois, cela n'a copié que les mp3 dans le dossier de musique racine et n'a ouvert aucun des sous-répertoires d'artistes et copié ces fichiers.
J'avais l'impression de -R
copier récursivement tous les fichiers. Comment puis-je atteindre cet objectif?
-iname
plutôt que-name
si des fichiers se terminent.MP3
.Vous avez spécifiquement mentionné le (s) fichier (s) / répertoire (s) à copier en utilisant par
*.mp3
exemple n'importe quel nom de fichier / répertoire se terminant par.mp3
.Ainsi, tout fichier se terminant par
.mp3
dans le/media/kalenpw/MyBook/Music/
répertoire et de la même manière, tout répertoire se terminant par.mp3
en/media/kalenpw/MyBook/Music/
sera copié, récursivement. S'il n'existe aucun fichier / répertoire correspondant, rien ne sera copié.Maintenant, pour copier tous les
.mp3
fichiers de/media/kalenpw/MyBook/Music/
recursivley dans le répertoire/media/kalenpw/HDD/Music/
:En utilisant
bash
:En utilisant
find
:la source
Vous pouvez également utiliser cpr :
Notez que sans
-p
cpr conservera les chemins de répertoire complets sur les noms de fichiers copiés.-r
peut être utilisé (au lieu de-p
) pour conserver le chemin sous '/media.../Music/'.Veillera également à
cpr
ce qu'aucun fichier ne soit écrasé, en ajoutant un numéro commençant par «0001» à tout nom de fichier répété copié.la source
Supposons que vous avez un tas de
.docx
,.mp3
,.txt
et les.xlsx
fichiers stockés dans cette structure de répertoire:... et que vous voulez dans récursif tous ces répertoires afin de copier tous trouvés les
.mp3
fichiers à/home/me/music/
mais vous ne pas souhaitez conserver cette arborescence dans la destination (vous voulez que tous trouvés les.mp3
fichiers à copier au/home/me/music/
lieu de copier dans les répertoires respectifs comme/home/me/music/dir1/
,/home/me/music/dir1/dir11/
et cetera).Dans ce cas, sur le terminal shell (bash), exécutez d'abord cette commande afin d'accéder à la racine de votre recherche de fichiers:
... puis exécutez cette commande:
Si vous souhaitez conserver l'arborescence du répertoire source dans la destination, exécutez cette commande à la place (après l'exécution
cd /files
):Sur les commandes ci - dessus, la recherche est insensible à la casse (ie matchs
.mp3
,.MP3
,.mP3
et.Mp3
). Utilisez-name
plutôt que-iname
si vous souhaitez que la recherche soit sensible à la casse (par exemple, l'utilisation-name
de la.mp3
chaîne de caractères correspondra aux fichiers se terminant par.mp3
mais pas à ceux se terminant par.MP3
,.mP3
ni.Mp3
).la source
find /source/dir -iname '*.mp3' | cpio -pdm /home/me/music/
, il créera / home / me / music / source / dir et les fichiers seront copiés vers ce nouvel emplacement.