删除 Linux NAS 上的所有 mac `._` 文件?

删除 Linux NAS 上的所有 mac `._` 文件?

我正在尝试从我的旧 NAS 盒(qnap ts209)中删除所有隐藏的 mac 垃圾邮件文件。我尝试了以下操作使用 bash 删除所有 Mac 生成的文件“._”但是我的 NAS 上的 find 命令不包含该-exec选项。

# [/share/Qweb] # find -name "._*" -exec rm -rf {} \;

Usage: find [PATH...] [EXPRESSION]

Search for files in a directory hierarchy.  The default PATH is
the current directory; default EXPRESSION is '-print'

EXPRESSION may consist of:
        -follow         Dereference symbolic links.
        -name PATTERN   File name (leading directories removed) matches PATTERN.
        -print          Print (default and assumed).

        -type X         Filetype matches X (where X is one of: f,d,l,b,c,...)
        -perm PERMS     Permissions match any of (+NNN); all of (-NNN);
                        or exactly (NNN)
        -mtime TIME     Modified time is greater than (+N); less than (-N);
                        or exactly (N) days

[/share/Qweb] #

以下是有关我的盒子的一些信息:

[/share/Qweb] # man find
-sh: man: command not found
[/share/Qweb] # cat /etc/*-release
cat: /etc/*-release: No such file or directory
[/share/Qweb] # lsb_release
-sh: lsb_release: command not found
[/share/Qweb] # cat /proc/version
Linux version 2.6.12.6-arm1 (root@NasARM4) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)) #2 Sun Sep 18 02:09:29 CST 2011
[/share/Qweb] # uname -a
Linux QNAP 2.6.12.6-arm1 #2 Sun Sep 18 02:09:29 CST 2011 armv5tejl unknown
[/share/Qweb] # uname -mrs
Linux 2.6.12.6-arm1 armv5tejl

我不知道如何从 find 导入 rm,也许这是可能的,我在 SU 中搜索不涉及的答案时感到非常困惑-exec。(编辑:https://stackoverflow.com/a/11191868/1238884表明管道到 RM 不是一个选项;该死,我也没有这个-delete选择。0

答案1

似乎你缺少消息要求的 PATH 参数,例如

find . -name "._*" -exec rm -rf {} \;

注意.这里的。如果不是从当前目录往下,则用起始路径替换。

如果有的话xargs(1),您可以使用那个,以便每次调用都可以rm(1)同时处理多个文件:

find . -name "._*" | xargs rm

要小心,进行一次试运行,例如echo(1)以确保不会发生任何不愉快的事情。

答案2

创建一个名为“del_apple_files.py”(或类似的文件),在其中粘贴以下内容:

#!/bin/env python

import os
import fnmatch 

def purge(dir, pattern):
   for root, dirnames, filenames in os.walk(dir):     
       for filename in fnmatch.filter(filenames, pattern):
           match = os.path.join(root, filename)        
           print(str(match))     
           os.remove(match)                  

dir = '/PATH/TO/SHARED/FOLDERS/ROOT'
pattern = '._*'

purge(dir, pattern)

将文件复制到您的 NAS 盒,通过 SSH 进入,并以具有整个共享文件夹访问权限的管理员用户身份运行该文件:

python /PATH/TO/del_apple_file.py

您还可以为其安排一个 cronjob,它只会删除文件而留下文件夹......

享受! ;)

相关内容