2017-10-09 74 views
0

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

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

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

回答

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/

相关问题