复制终端中多个目录中的文件

时间:2017-10-09 18:32:13

标签: macos command-line terminal

我是使用命令行进行操作的新手,所以如果这个问题很明显,请原谅我。我想从一个包含许多子目录的目录中移动某种类型的所有文件(.aiff)。文件结构如下所示:

directory
- subdir1
  -- sound.aiff 
  -- other.txt
- subdir2
  -- sound2.aiff
  -- other2.txt

我尝试使用像cp -R /Users/me/directory/*.aiff /Users/me/newdirectory这样的东西,但是我得到了一个"没有这样的文件或目录"错误。我不知道如何指定我想要在子目录中复制的文件必须是.aiff文件。

1 个答案:

答案 0 :(得分:2)

试试这个:

cp -R /Users/me/directory/*/*.aiff /Users/me/newdirectory

但可能缺少目的地/Users/me/newdirectory

您可以通过以下方式验证:

file /Users/me/newdirectory

如果目录不存在,则会输出如下错误:

Users/me/newdirectory: cannot open `/Users/me/newdirectory' (No such file or directory)

使用以下命令创建目录:

mkdir /Users/me/newdirectory

接下来,尝试再次复制文件,如果要使用mv代替cp

移动文件

另一种方法是使用命令find,例如:

find /Users/me/directory -type f -iname "*.aiff" -exec mv {} /Users/me/newdirectory \;

在此示例中,命令find将仅在目录/Users/me/directory/中搜索-type f中找到的每个文件*.aiff结尾(不区分大小写)的文件它将执行命令mv exec mv {} /Users/me/newdirectory{}是占位符。

在移动之前,你可以通过找到所需的类型来测试命令:

find . -iname "*.aiff"

这将搜索执行命令的目录中的文件,注意.而不是/Users/me/directory/