Как я могу найти и удалить весь .jpg? - удаляют, кажется, не работает...
[/share/Multimedia/Music] # find . -name '*.jpg' -delete
BusyBox v1.01 (2015.01.25-18:47+0000) multi-call binary
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
Вы, кажется, используете Busybox find
, не GNU find
. В то время как Busybox find
, как предполагается, поддерживает -delete
, версия с Ubuntu не кажется.
$ busybox find --help
BusyBox v1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) multi-call binary.
Usage: find [PATH]... [OPTIONS] [ACTIONS]
Search for files and perform actions on them.
First failed action stops processing of current file.
Defaults: PATH is current directory, action is '-print'
-follow Follow symlinks
-xdev Don't descend directories on other filesystems
-maxdepth N Descend at most N levels. -maxdepth 0 applies
actions to command line arguments only
-mindepth N Don't act on first N levels
-depth Act on directory *after* traversing it
Actions:
( ACTIONS ) Group actions for -o / -a
! ACT Invert ACT's success/failure
ACT1 [-a] ACT2 If ACT1 fails, stop, else do ACT2
ACT1 -o ACT2 If ACT1 succeeds, stop, else do ACT2
Note: -a has higher priority than -o
-name PATTERN Match file name (w/o directory name) to PATTERN
-iname PATTERN Case insensitive -name
-path PATTERN Match path to PATTERN
-ipath PATTERN Case insensitive -path
-regex PATTERN Match path to regex PATTERN
-type X File type is X (one of: f,d,l,b,c,...)
-perm MASK At least one mask bit (+MASK), all bits (-MASK),
or exactly MASK bits are set in file's mode
-mtime DAYS mtime is greater than (+N), less than (-N),
or exactly N days in the past
-mmin MINS mtime is greater than (+N), less than (-N),
or exactly N minutes in the past
-newer FILE mtime is more recent than FILE's
-inum N File has inode number N
-user NAME/ID File is owned by given user
-group NAME/ID File is owned by given group
-size N[bck] File size is N (c:bytes,k:kbytes,b:512 bytes(def.))
+/-N: file size is bigger/smaller than N
-links N Number of links is greater than (+N), less than (-N),
or exactly N
-prune If current file is directory, don't descend into it
If none of the following actions is specified, -print is assumed
-print Print file name
-print0 Print file name, NUL terminated
-exec CMD ARG ; Run CMD with all instances of {} replaced by
file name. Fails if CMD exits with nonzero
я не знаю, почему Вы используете Busybox find
, но пытаетесь использовать /usr/bin/find
вместо этого. Или -exec rm {} +
(никакая поддержка -execdir
любой) или xargs
решение, которое предлагает Rinzwind.
Для действительно старых версий BusyBox (как печально используется моим NAS QNAP), не будут работать предложения с помощью -print0
, -exec
и -delete
.
я должен был обратиться к созданию списка и использованию цикла:
IFS= команда, разделяемая на два шага, действительно позволяет, чтобы проверил, корректны ли найденные файлы прежде, чем удалить их.
\n' aFiles=( $(find . -name '*.jpg') );
for sFile in "${aFiles[@]}"; do rm "${sFile}"; done
команда, разделяемая на два шага, действительно позволяет, чтобы проверил, корректны ли найденные файлы прежде, чем удалить их.
find . -type f -name "*.jpg" -exec rm -vf {} +
Это удалит "файлы" (и не "каталоги") заканчивающийся на ".jpg".
Мышление, хотя: Вы не должны делать этого как корня. Ошибка в команде может уничтожить Вашу систему, и если не использующий корень был бы ошибка на ошибке полномочий.
нет никакого пути назад от этого, если Вы не создали резервное копирование.
, Если Вы делаете
find . -type f -name "*.jpg" | more
, Вы доберетесь, список файлов, собирающихся быть удаленным (эти | more
, покажет Вам результат на страницах).
find . type f -name "*.jpg" -print0 | xargs -0 rm
работы также. Тот же принцип: результаты передаются по каналу к команде xargs, которая делает комнату для каждого найденного файла.