我正在寻找.flv , .avi等文件
我想看到这些文件types(我的服务器上)的所有文件(我不介意做一个一个,即看到所有的.flv文件,然后所有的.avi文件)的列表。
然后,一旦我确定了要移动的那些文件,我该如何将遍布整个文件系统的多个文件复制到特定的文件夹?
有几种方法可以在GNU / Linux系统上search文件。 两种主要的方法是locate并find :
locate使用整个系统中已知文件的数据库来查找文档。 这是非常有用的,但需要保持这个数据库是最新的(更新b),这可能需要很长的时间; locate (它没有持久的数据库)慢,但更加精细。 因此,如果您需要查找符合条件的系统上的所有文件,可以使用locate :
$ locate --regex "avi|flv" | grep '\.\(avi\|flv\)$'
而如果您在特定的目录中search并且要确保没有caching延迟效果,则可以使用find :
$ find /path/to/your/directory -regex '.*\.\(avi\|flv\)'
现在,要将这些文件复制到特定的文件夹:
$ locate --regex "avi|flv" | grep '\.\(avi\|flv\)$' | xargs cp /path/to/specific/folder
要么
$ find /path/to/your/directory -regex '.*\.\(avi\|flv\)' -exec cp {} /path/to/specific/folder \;
在Raphnik的评论中进行扩展,你可以通过把它放在find或者查找命令的正则expression式中来保存一个pipe道: '\.avi$|\.flv$' – 它会匹配扩展名为.avi和.flv的文件。
使用find -exec或xargs可能更优雅的方式来做到这一点,但这里有一个快速的黑客攻击:
updatedb
然后
for fred in `locate *.flv | awk ' { print $1 } '` do; mv "$fred" /my/dest/folder/ done
(等等)