kal*_*npw 13 command-line music transfer cp copy
我所有的音乐都在一个文件夹中/media/kalenpw/MyBook/Music/ABunchOfOtherFoldersWithFilesInside。我想复制所有的 mp3,/media/kalenpw/HDD/Music所以我使用了:
cp -R /media/kalenpw/MyBook/Music/*.mp3 /media/kalenpw/HDD/Music
Run Code Online (Sandbox Code Playgroud)
然而,这只复制了根音乐文件夹中的 mp3,并没有打开任何艺术家子目录并复制这些文件。
我的印象-R是递归复制所有文件。我怎样才能实现上述目标?
tec*_*raf 23
用:
find /media/kalenpw/MyBook/Music/ -name '*.mp3' -exec cp {} /media/kalenpw/HDD/Music \;
Run Code Online (Sandbox Code Playgroud)
您的命令不起作用的原因是包含通配符 ( *.mp3) 的名称在命令运行之前被扩展,因此如果您有三个文件 ( 01.mp3, 02.mp3, 03.mp3) 您的有效命令是:
cp -R /media/kalenpw/MyBook/Music/01.mp3 /media/kalenpw/MyBook/Music/02.mp3 /media/kalenpw/MyBook/Music/03.mp3 /media/kalenpw/HDD/Music
Run Code Online (Sandbox Code Playgroud)
如您所见,-R在这种情况下没有任何影响。
您特别提到了要复制的*.mp3文件/目录,即使用任何以.mp3.
所以在结尾的文件.mp3在/media/kalenpw/MyBook/Music/目录中,同样,任何在结束目录.mp3中/media/kalenpw/MyBook/Music/会被复制,递归。如果没有这样匹配的文件/目录,则不会复制任何内容。
现在将所有.mp3文件从/media/kalenpw/MyBook/Music/recursivley复制到目录/media/kalenpw/HDD/Music/:
使用bash:
shopt -s globstar
cp -at /media/kalenpw/HDD/Music /media/kalenpw/MyBook/Music/**/*.mp3
Run Code Online (Sandbox Code Playgroud)使用find:
find /media/kalenpw/MyBook/Music -type f -name '*.mp3' -exec cp -at /media/kalenpw/HDD/Music {} +
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
58614 次 |
| 最近记录: |