如何在命令行中查找RHEL中特定types的所有文件?

我正在寻找.flv.avi等文件

我想看到这些文件types(我的服务器上)的所有文件(我不介意做一个一个,即看到所有的.flv文件,然后所有的.avi文件)的列表。

然后,一旦我确定了要移动的那些文件,我该如何将遍布整个文件系统的多个文件复制到特定的文件夹?

有几种方法可以在GNU / Linux系统上search文件。 两种主要的方法是locatefind

  • 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 

(等等)