有谁能解决从Mac将文件移动到Linux服务器之后删除那些令人讨厌的._和.DS_Store文件的解决方案?
指定一个开始目录,然后放开它?像/ var / www / html /下...
有谁能解决从Mac将文件移动到Linux服务器之后删除那些令人讨厌的._和.DS_Store文件的解决方案?
指定一个开始目录,然后放开它?像/ var / www / html /下...
Answers:
转到目录,并使用:
find . -name ".DS_Store" -print0 | xargs -0 rm -rf
find . -name "._*" -print0 | xargs -0 rm -rf
未经测试,请先尝试使用不带xargs的产品!
您可以将查找后的时间段替换为目录,而不是先更改为目录。
find /dir/here ...
-delete
操作,可以缩短操作时间。@JT:该搜索在下进行递归搜索.
。取决于有多少个文件和子目录...您不能只是禁止上传这些文件和子目录吗?
-r
在这种情况下,不建议使用(递归)标志,因为您不想删除任何目录。–
command rm
是更好(更直接)的解决方案吗?(通过“直接”,我的意思是它专门处理手头的问题,而没有别的,因此不太可能产生任何有害的副作用,并且对于必须维护代码的任何人也将更加不言自明。稍后)
较新的findutils支持-delete
,因此:
find . -name ".DS_Store" -delete
添加-print
还可以获取删除列表。
我相信,如果您拥有最新的POSIX系统,那么Command将会为您服务。至少它在OS X 10.8上对我有效,并在macOS 10.12(Mojave)上对其进行了测试的其他人也可以使用。
感谢@ephemient在@ X-Istence的帖子中的评论(认为它很有用,足以保证自己的回答)。
find
默认情况下会递归到当前工作目录。
.
在macOS 10.12(Sierra)上。
简单命令:
rm `find ./ -name '.DS_Store'` -rf
rm `find ./ -name '._'` -rf
祝好运!
rm -i
查找。/-name'* py'` -rf , which did NOT prompt me to delete files. you will need to take it on the end (i.e.
-rfi`)。感谢上帝提供我的备份脚本。
-bash: /bin/rm: Argument list too long
cd /var/www/html && find . -name '.DS_Store' -print0 | xargs -0 rm
cd /var/www/html && find . -name '._*' -print0 | xargs -0 rm
您可以切换到zsh而不是bash。这使您可以使用**匹配目录树中任何位置的文件:
$ rm /var/www/html/**/_* /var/www/html/**/.DS_Store
您还可以像这样组合它们:
$ rm /var/www/html/**/(_*|.DS_Store)
Zsh还有bash缺少的许多其他功能,但值得一提的是。大多数(可能是所有)Linux发行版以及cygwin和OS X中都可以使用它。
您可以在zsh网站上找到更多信息。
**
(尽管不是默认情况下,shopt -s globstar
需要设置)
find . -name "FILE-TO-FIND"-exec rm -rf {} \;
find
支持它的文件,+
则类似于xargs:-(find . -name "FILE-TO-FIND" -exec rm -rf {} +
而且,您在之前缺少空格-exec
)
最好通过在此答案中添加-print来查看要删除的内容
find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete -print
注意事项:
'-delete'不是递归的。因此,如果.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 {} \;