替换 DOS xcopy 命令

sle*_*ess 6 command-line bash clipboard

在DOS中有命令

xcopy /s *.mp3 ..\TEMP2

我怎样才能在 Ubuntu 中做到这一点?

cp -r *.mp3 ../TEMP2

将递归复制所有 mp3 文件,不幸的是由于*.mp3过滤器没有路径。

cp -r *.* ../TEMP2

将复制路径但不能仅限于 mp3 文件

我看过rsync,但我不明白。

Lek*_*eyn 8

Ubuntu 中工具的强大之处在于您可以将它们组合起来。下一个命令在当前目录及其子目录中查找所有 .mp3 文件,并将它们复制到../TEMP2/文件夹中,保留路径:

find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \;
Run Code Online (Sandbox Code Playgroud)
  • find -iname '*.mp3'- 查找所有以.mp3(不区分大小写)和
    • -exec - 为每个匹配执行一个命令:
      • install -D {} ../TEMP2/{}- 复制匹配的文件以../TEMP/保留路径。({}替换为包含文件名的路径)
    • \;- 结束-exec命令

如果要获取进度,请-ls在命令之前添加("list") -exec。它也可以放在后面\;,但在这种情况下,名称会在复制后显示。例子:

find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \;
find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
Run Code Online (Sandbox Code Playgroud)

  • @sleepless 请再试一次,我错过了`-D` 选项,它可以根据需要创建任何目录。 (2认同)