有没有人有解决方案可以删除将文件从Mac移动到Linux服务器后得到的那些讨厌的._和.DS_Store文件?
指定一个开始目录然后放手吧?比如/ var / www / html / down ...
答案 0 :(得分:167)
切换到目录,然后使用:
find . -name ".DS_Store" -print0 | xargs -0 rm -rf
find . -name "._*" -print0 | xargs -0 rm -rf
未经测试,首先尝试不使用xargs!
您可以使用目录替换查找后的句点,而不是先更改为目录。
find /dir/here ...
答案 1 :(得分:94)
find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete
答案 2 :(得分:84)
较新的findutils支持-delete
,所以:
find . -name ".DS_Store" -delete
添加-print
以获取删除列表。
命令对你有用,我相信。至少它适用于OS X 10.8,适用于在macOS 10.12(Mojave)上测试过的其他人。
在@ X-Istence的帖子评论中感谢@ephemient(认为这有助于保证自己的答案)。
答案 3 :(得分:18)
简单命令:
rm `find ./ -name '.DS_Store'` -rf
rm `find ./ -name '._'` -rf
祝你好运!
答案 4 :(得分:12)
cd /var/www/html && find . -name '.DS_Store' -print0 | xargs -0 rm
cd /var/www/html && find . -name '._*' -print0 | xargs -0 rm
答案 5 :(得分:6)
您可以切换到zsh而不是bash。这使您可以使用**来匹配目录树中任何位置的文件:
$ rm /var/www/html/**/_* /var/www/html/**/.DS_Store
你也可以像这样组合它们:
$ rm /var/www/html/**/(_*|.DS_Store)
Zsh还有许多bash缺乏的其他功能,但只有一个功能值得切换。它可用于大多数(可能是所有)Linux发行版,以及cygwin和OS X.
您可以在zsh site找到更多信息。
答案 6 :(得分:4)
find . -name "FILE-TO-FIND"-exec rm -rf {} \;
答案 7 :(得分:3)
删除" Thumbs.db"的示例递归;
find . -iname "Thumbs.db" -print0 | xargs -0 rm -rf
通过以下方式验证:
find . -iname "Thumbs.db"
现在应该在当前路径中不显示带有" Thumbs.db"的任何条目。
答案 8 :(得分:3)
最好通过将-print添加到this answer
来查看正在删除的内容find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete -print
答案 9 :(得分:2)
如果你有Bash 4.0 ++
#!/bin/bash
shopt -s globstar
for file in /var/www/html/**/.DS_Store /var/www/html/**/._
do
echo rm "$file"
done
答案 10 :(得分:1)
有几点需要注意:
' - 删除'不是递归的。因此,如果.TemporaryItems(文件夹)中包含文件,则命令失败。
macs创建了很多这些讨厌的文件: .DS_Store ._。DS_Store .TemporaryItems .apdisk
这一个命令解决了所有这些问题。从多次匹配中反复运行查找。
find /home/foo \( -name '.DS_Store' -or -name '._.DS_Store' -or -name '._*' -or -name '.TemporaryItems' -or -name '.apdisk' \) -exec rm -rf {} \;
答案 11 :(得分:0)
这也有效:
sudo rm -rf 2018-03-*
这里删除的文件名称格式为2018-03-(其他)
保持简单