[英]Copying files in multiple directories in terminal
我不熟悉使用命令行进行操作,因此如果这个问题显而易见,请原谅我。 我想从一个包含许多子目录的目录中移动某种类型(.aiff)的所有文件。 文件结构如下所示:
directory
- subdir1
-- sound.aiff
-- other.txt
- subdir2
-- sound2.aiff
-- other2.txt
我尝试使用类似cp -R /Users/me/directory/*.aiff /Users/me/newdirectory
但出现“无此文件或目录”错误。 我不知道如何指定要复制到子目录中的文件必须是.aiff文件。
尝试这个:
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/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.