我知道我可以在当前文件夹和所有子文件夹中使用find . -name ".DS_STORE"
到find all the .DS_STORE files。但是如何同时从命令行中删除它们呢?我发现来回切换到所有文件夹并逐个删除它真的很烦人。
感谢您的任何建议。
答案 0 :(得分:71)
find
可以做到这一点。只需添加-delete
:
find . -name ".DS_Store" -delete
答案 1 :(得分:3)
干净地做到这一点的最佳方法是使用:
find . -type f \( -name ".DS_Store" -o -name "._.DS_Store" \) -delete -print 2>&1 | grep -v "Permission denied"
这将删除文件,隐藏“权限被拒绝”错误(同时保留其他错误),并打印出干净的已删除文件列表。
答案 2 :(得分:0)
您还可以使用扩展通配(**
):
rm -v **/.DS_Store
在zsh,bash 4和类似的shell中(如果未启用,请通过:shopt -s globstar
激活)。
答案 3 :(得分:0)
使用文本编辑器创建一个新文件,将以下文本复制并粘贴到其中,然后使用“.sh”文件扩展名保存,然后使用“终端”打开该文件。确保文本编辑器实际上是保存原始文本,而不是将文件保存为RTF格式文件或其他文本文件格式,并在文件中包含其他信息。
#!/bin/bash
echo -e "\nDrag a folder here and press the Enter or Return keys to delete all files whose names begin with a dot in its subfolders:\n"
read -p "" FOLDER
echo -e "\nThe following files will be deleted:\n"
find $FOLDER -name ".*"
echo -e "\nDelete these files? (y/n): "
read -p "" DECISION
while true
do
case $DECISION in
[yY]* ) find $FOLDER -name ".*" -delete
echo -e "\nThe files were deleted.\n"
break;;
[nN]* ) echo -e "\nAborting without file deletion.\n"
exit;;
* ) echo -e "\nAborting without file deletion.\n"
exit;;
esac
done
答案 4 :(得分:0)
以下是递归删除.DS_Store文件的方法
打开终端 在命令行中,转到所有文件和文件夹所在的文件夹的位置: cd到/您的/目录
然后,最后,输入以下命令: 找 。 -名称'.DS_Store'-类型f-删除
按Enter
干杯!
答案 5 :(得分:0)
这不完全是问题,但是如果您实际上想在没有.DS_STORE
个文件的情况下压缩目录,则可以使用...
zip -r -X archive_name.zip folder_to_compress