Bash:如何将这两个find命令组合成一个命令?
我有 第一个查找指定了名称和路径的文件,计算总大小,然后删除它们。第二个查找所有以“@2x.png”结尾的文件,然后尝试从结尾删除“@2x.png”,然后删除该文件 那么,如何将这两个命令组合到一个find中呢 注意:有以“@2x.png”结尾的直接路径和名称(在第一个命令中),我不想从中删除“@2x.png”。所以我不能把它们结合在一起。e、 g(如果它们只是组合在一起)具有Bash:如何将这两个find命令组合成一个命令?,bash,find,path-finding,Bash,Find,Path Finding,我有 第一个查找指定了名称和路径的文件,计算总大小,然后删除它们。第二个查找所有以“@2x.png”结尾的文件,然后尝试从结尾删除“@2x.png”,然后删除该文件 那么,如何将这两个命令组合到一个find中呢 注意:有以“@2x.png”结尾的直接路径和名称(在第一个命令中),我不想从中删除“@2x.png”。所以我不能把它们结合在一起。e、 g(如果它们只是组合在一起)具有file@2x.png在第一个命令中(意味着我想删除该确切名称),这意味着sed将删除“@2x”,这不是我想要做的 因为
file@2x.png
在第一个命令中(意味着我想删除该确切名称),这意味着sed将删除“@2x”,这不是我想要做的
因为我不擅长解释:第一个命令中的所有内容都应该指定确切的名称/路径,并且应该由sed修改而不是。第二个命令中的所有内容都应该由sed修改,但我只想为这两个命令运行一个find命令 不是肯定的,我知道您想做什么,但是如果您仍然希望数组在第一个命令中包含相同的内容,但在第二个命令中包含文件
find/\(-name“*.lproj”…-iname“*.tmp”\)-print-o-path”/path/to/location-name'*@2x.png'-exec bash-c'echo rm“${1/\@2x/}”bash{}”代码>
注意:删除上面的echo
以执行实际rm
。另外,请注意,如果文件符合添加到数组和删除的条件,则它们将被添加到数组中,但不会被删除,因为-o
短路,如果您想要相反的结果,请更换顺序
IFS=$'\n' read -d '' -ra files < <(find / -name "*.lproj" ! -iname "En*" ! -name "Base*" -o -name "*@3x.png" -o -name "*@3x.jpg" -o -name "*@3x.3ds" -o -path "/private/var/mobile/Containers/Bundle/Application/*/iTunesArtwork" -o -path "/private/var/mobile/Containers/Bundle/Application/*/*/*-568h@2x.png" -o -name "*~iphone*" ! -path "*/Kik.app/*" ! -path "*/fiverr.app/*" -o -path "/private/var/mobile/Containers/Data/*/*/Library/Caches" -o -path "/private/var/mobile/Documents/Flex/*.dat" -o -path "/private/var/mobile/Containers/Data/*/*/tmp/*" -o -path "/private/var/mobile/Documents/CyDown/*" -o -path "/private/var/db/stash/_.*/Applications/*/*-568h@2x.png" -o -path "/private/var/mobile/Containers/Data/*/*/Library/googleanalytics*" -o -path "/private/var/mobile/Containers/Data/*/*/Library/*FlurryFiles" -o -path "/private/var/mobile/Library/BatteryLife/Archives/*" -o -path "/private/var/tmp/*" -o -path "/private/var/lib/apt/lists/partial/*" -o -path "/private/var/mobile/Library/Logs/*" -o -path "/private/var/logs/*" -o -path "/private/var/root/.bash_history" -o -path "/private/var/mobile/Library/googleanalytics*" -o -path "/private/var/mobile/Library/Logs/CrashReporter/DiagnosticLogs/*" -o -path "/private/var/mobile/Library/Caches/*" ! -name "libactivator.plist" -o -iname "*.log" -o -iname "*.old" -o -iname "*.tmp")
du -hc "${files[@]}" 2>/dev/null | tail -1
rm -r "${files[@]}" >/dev/null 2>&1
find / -path "/path/to/location" -name '*@2x.png' | sed 's/@2x//' | xargs rm