我正在尝试根据文件扩展名组织大量文件。
我的代码如下(对不起长度):
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有关,而不是查找部分。
这段代码应该做什么:
将检测到的任何文件从〜/ Desktop / test / all /上移到〜/ Desktop / test /
这段代码实际上做了什么:
什么都没有。没错。看起来很成功,但文件永远不会被移动。
你确定没有错别字吗?
非常肯定,因为它适用于较少数量的参数。我还使用循环构建该命令,减少了拼写错误的可能性。
我是如何建立这个命令的呢? 我在这里写了一个bash脚本:http://pastebin.com/MeQgH74X
为什么有这么大的查找命令? 因为我试图组织的实际文件夹来自备份驱动器,该驱动器具有数十万个文件夹(增量备份)并且不止一次地迭代它是非常痛苦的。我想迭代备份驱动器一次,找到我需要的文件,将它们全部移动到一个文件夹中,然后迭代该单个文件夹(现在保存我想要的所有文件类型),然后将文件放入文件夹基于文件类型。我希望这是有道理的。
谢谢你们!
答案 0 :(得分:3)
逻辑且优先级高于逻辑或find
。
find ... \( ... -o ..... \) -exec ...