linux - 'find/-name ' 文件的最大限制'-o -iname 'file2' -o -iname 'file3' ..."等

标签 linux bash command-line find exec

我正在尝试根据文件扩展名组织大量文件。

我的代码如下(抱歉有点长):

sudo find /malon/tyler/Desktop/test/all/ -iname '*.doc' -o -iname '*.docx' -o -iname '*.log' -o -iname '*.msg' -o -iname '*.odt' -o -iname '*.pages' -o -iname '*.rtf' -o -iname '*.tex' -o -iname '*.txt' -o -iname '*.wpd' -o -iname '*.wps' -o -iname '*.csv' -o -iname '*.dat' -o -iname '*.gbr' -o -iname '*.ged' -o -iname '*.ibooks' -o -iname '*.key' -o -iname '*.keychain' -o -iname '*.pps' -o -iname '*.ppt' -o -iname '*.pptx' -o -iname '*.sdf' -o -iname '*.tar' -o -iname '*.tax' -o -iname '*.vcf' -o -iname '*.xml' -o -iname '*.aif' -o -iname '*.iff' -o -iname '*.m3u' -o -iname '*.m4a' -o -iname '*.mid' -o -iname '*.midi' -o -iname '*.mp3' -o -iname '*.mpa' -o -iname '*.ra' -o -iname '*.wav' -o -iname '*.wma' -o -iname '*.3g2' -o -iname '*.3gp' -o -iname '*.asf' -o -iname '*.asx' -o -iname '*.avi' -o -iname '*.flv' -o -iname '*.m4v' -o -iname '*.mov' -o -iname '*.mp4' -o -iname '*.mpg' -o -iname '*.mpeg' -o -iname '*.rm' -o -iname '*.srt' -o -iname '*.swf' -o -iname '*.vob' -o -iname '*.wmv' -o -iname '*.3dm' -o -iname '*.3ds' -o -iname '*.max' -o -iname '*.obj' -o -iname '*.bmp' -o -iname '*.dds' -o -iname '*.gif' -o -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.psd' -o -iname '*.pspimage' -o -iname '*.tga' -o -iname '*.thm' -o -iname '*.tif' -o -iname '*.tiff' -o -iname '*.yuv' -o -iname '*.ai' -o -iname '*.eps' -o -iname '*.ps' -o -iname '*.svg' -o -iname '*.indd' -o -iname '*.pct' -o -iname '*.pdf' -o -iname '*.xlr' -o -iname '*.xls' -o -iname '*.xlsx' -o -iname '*.accdb' -o -iname '*.db' -o -iname '*.dbf' -o -iname '*.mdb' -o -iname '*.pdb' -o -iname '*.sql' -o -iname '*.apk' -o -iname '*.app' -o -iname '*.bat' -o -iname '*.cgi' -o -iname '*.com' -o -iname '*.exe' -o -iname '*.gadget' -o -iname '*.jar' -o -iname '*.pif' -o -iname '*.vb' -o -iname '*.wsf' -o -iname '*.dem' -o -iname '*.gam' -o -iname '*.nes' -o -iname '*.rom' -o -iname '*.sav' -o -iname '*.dwg' -o -iname '*.dxf' -o -iname '*.gpx' -o -iname '*.kml' -o -iname '*.kmz' -o -iname '*.asp' -o -iname '*.aspx' -o -iname '*.cer' -o -iname '*.cfm' -o -iname '*.csr' -o -iname '*.css' -o -iname '*.htm' -o -iname '*.html' -o -iname '*.js' -o -iname '*.jsp' -o -iname '*.php' -o -iname '*.rss' -o -iname '*.xhtml' -o -iname '*.crx' -o -iname '*.plugin' -o -iname '*.fnt' -o -iname '*.fon' -o -iname '*.otf' -o -iname '*.ttf' -o -iname '*.cab' -o -iname '*.cpl' -o -iname '*.cur' -o -iname '*.deskthemepack' -o -iname '*.dll' -o -iname '*.dmp' -o -iname '*.drv' -o -iname '*.icns' -o -iname '*.ico' -o -iname '*.lnk' -o -iname '*.sys' -o -iname '*.cfg' -o -iname '*.ini' -o -iname '*.prf' -o -iname '*.hqx' -o -iname '*.mim' -o -iname '*.uue' -o -iname '*.7z' -o -iname '*.cbr' -o -iname '*.deb' -o -iname '*.gz' -o -iname '*.pkg' -o -iname '*.rar' -o -iname '*.rpm' -o -iname '*.sitx' -o -iname '*.tarr' -o -iname '*.zip' -o -iname '*.zipx' -o -iname '*.bin' -o -iname '*.cue' -o -iname '*.dmg' -o -iname '*.iso' -o -iname '*.mdf' -o -iname '*.toast' -o -iname '*.vcd' -o -iname '*.c' -o -iname '*.class' -o -iname '*.cpp' -o -iname '*.cs' -o -iname '*.dtd' -o -iname '*.fla' -o -iname '*.h' -o -iname '*.java' -o -iname '*.lua' -o -iname '*.m' -o -iname '*.pl' -o -iname '*.py' -o -iname '*.sh' -o -iname '*.sln' -o -iname '*.vcxproj' -o -iname '*.xcodeproj' -o -iname '*.bak' -o -iname '*.tmp' -o -iname '*.crdownload' -o -iname '*.ics' -o -iname '*.msi' -o -iname '*.part' -o -iname '*.torrent' -o -iname '*.raw' -exec mv {} /home/malon/Desktop/test/ \;

如果我在 find 命令末尾省略 -exec 部分,find 命令将按预期工作。这让我相信它与 exec 有关,而不是 find 部分。

这段代码应该做什么:
将任何检测到的文件从 ~/Desktop/test/all/上移到 ~/Desktop/test/

这段代码实际做了什么:
什么都没有。没有错误。看起来很成功,但文件从未移动过。

你确定没有错别字吗?
可以肯定的是,因为它适用于较少数量的参数。我还使用循环构建该命令,减少了打字错误的可能性。

我是如何构建这个命令的?
我在这里写了一个 bash 脚本:http://pastebin.com/MeQgH74X

为什么会有这么大的查找命令?
因为我试图组织的实际文件夹来自一个备份驱动器,该驱动器具有数十万个文件夹(增量备份)并且不止一次迭代它非常长。我想迭代备份驱动器一次,找到我需要的文件,将它们全部移动到一个文件夹中,然后迭代该单个文件夹(现在包含我想要的所有文件类型),然后将文件放入文件夹中基于文件类型。我希望这是有道理的。

谢谢大家!

最佳答案

逻辑且比 find 中的逻辑或具有更高的优先级。

find ... \( ... -o ..... \) -exec ...

关于linux - 'find/-name ' 文件的最大限制'-o -iname 'file2' -o -iname 'file3' ..."等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413987/

相关文章:

linux - 创建文件然后复制它的 Bash 脚本 - 副本有时是空的

bash - 为什么我的 Bash 计数器在 while 循环后重置

linux - 如何使用 printf 打印多个变量

ios - 如何从命令行在 iOS 模拟器中设置默认设备

postgresql - 来自 aws-rds 实例的 postgres 数据库转储

android - 尽管 ADB 成功检测到手机,但未检测到 USB 设备或正在运行的模拟器

python - 从命令行、Linux 执行带有函数的 python 脚本

windows - 如何使用命令行将文件从 Mac OS 复制到同一网络中的 Windows?

linux - 通过 docker swarm 使用多个特定的网络接口(interface)

linux - 权限被拒绝尝试使用 openssl、sudo 从网站下载证书