我在某个目录中有一堆文件(以及许多其他文件)想要移动。
幸运的是,我想要移动的所有文件的名称中都包含特定的标识符,因此我可以获得ls | grep IDENTIFIER
要移动的文件的确切列表。
但是,我怎样才能mv file /path/to/dest/folder/
一次执行,而不是一个接一个地执行(有很多文件需要移动)?
答案1
您可以使用:
mv -t DESTINATION file1 file2 file3
以下方法也有效,但我不确定是否mv
多次调用,因为grep
每次匹配都会输出一个新行:
mv -t DESTINATION `ls|grep IDENTIFIER`
答案2
如果要移动ABC-IDENTIFIER-XYZ.ext
或IDENTIFIER-XYZ.xml
,可以使用:
mv *IDENTIFIER* ~/YourPath/
*
是通配符零个或多个字符, 这意味着零个或多个字符,然后是IDENTIFIER
,然后是零个或多个字符。
这将移动所有文件包含您IDENTIFIER
指定的。
答案3
您可以使用通配符。
例如,要移动所有具有.doc
扩展名的文件:
mv *.doc /path/to/dest/folder/
这会将当前目录下的所有 doc 文件移动到特定目的地。
编辑
回答评论:
但是要移动的文件列表不是由扩展名决定的。一些文件被命名为:
ABC-IDENTIFIER-XYZ.ext
而一些则IDENTIFIER-XYZ.ext
具有不同的扩展名,大多数xml
或properties
。
mv *.ext *.xml *.txt /path/to/dest/folder/
答案4
如果文件位于同一目录中,则可以使用
mv /path/to/source/dir/{file1,file2,*.ext1,*.ext2} /path/to/destination/
(在 Ubuntu 16.04 中测试)