Я пытаюсь удалить все спам-файлы Mac со спама из моего старого сетевого хранилища (qnap ts209). Я попытался выполнить команду « Удалить все файлы, сгенерированные Mac» с помощью bash, но команда find на моем NAS не включает параметр -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 . (Edit: https://stackoverflow.com/a/11191868/1238884 предлагает трубопроводы для RM не вариант, блин, я не имею -delete , either.0

2 ответа2

1

Кажется, вам не хватает аргумента PATH, который запрашивается в сообщении, то есть что-то вроде

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

Обратите внимание . Вот. Если не из текущего каталога вниз, замените его на начальный путь.

Если у вас есть xargs(1) , вы можете использовать его, чтобы каждый вызов rm(1) обрабатывал несколько файлов одновременно:

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

Будьте осторожны, выполните пробный запуск, например, просто echo(1) чтобы убедиться, что ничего плохого не произойдет.

0

Создайте файл с именем «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 для него, он будет только удалять файлы и оставит папки позади ...

Наслаждайтесь! ;)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .