我是使用命令行进行操作的新手,所以如果这个问题很明显,请原谅我。我想从一个包含许多子目录的目录中移动某种类型的所有文件(.aiff)。文件结构如下所示:
directory
- subdir1
-- sound.aiff
-- other.txt
- subdir2
-- sound2.aiff
-- other2.txt
我尝试使用像cp -R /Users/me/directory/*.aiff /Users/me/newdirectory
这样的东西,但是我得到了一个"没有这样的文件或目录"错误。我不知道如何指定我想要在子目录中复制的文件必须是.aiff文件。
答案 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/