У меня есть папка с подпапками с теми же файлами, например:
dsc_9660__content_w.jpg
dsc_9660__content.jpg
dsc_9660__h70.jpg
dsc_9660__small.jpg
dsc_9660.jpg
Суффикс - является различными размерами изображений.
Как удалить все файлы с суффиксом как это:__[a-zA-z0-9].(png|jpg|jpeg)
?
И сохраните только исходные изображения без суффикса как dsc_9660.jpg
в моем примере
Попробуйте , находят команда с -regex
переключатель или -iregex
(нечувствительный к регистру), изменяют Ваш regex на .*__[a-zA-z0-9_]*\.(png|jpg|jpeg)
и используют -delete
опция удалить подобранный файл:
find . -type f -regextype "posix-egrep" -iregex '.*__[a-zA-z0-9_]*\.(png|jpg|jpeg) можно использовать другие типы -regextype
(который работается) вместо "posix-egrep" как:
"posix-расширенный" или "posix-awk".
-regex pattern
File name matches regular expression pattern. This is a match on the whole path, not a search. For
example, to match a file named './fubar3', you can use the regular expression '.*bar.' or '.*b.*3',
but not 'f.*r3'. The regular expressions understood by find are by default Emacs Regular Expres‐
sions, but this can be changed with the -regextype option.
-iregex pattern
Like -regex, but the match is case insensitive.
-regextype type
Changes the regular expression syntax understood by -regex and -iregex tests which occur later on the
command line. Currently-implemented types are emacs (this is the default), posix-awk, posix-basic,
posix-egrep and posix-extended.
-delete
Delete files
В конце добавляют -delete
переключатель для управления к удалению подобранных файлов:
find . -type f -regextype "posix-egrep" -iregex '.*__[a-zA-z0-9_]*\.(png|jpg|jpeg) <час> .*__[a-zA-z0-9_]*\.(png|jpg|jpeg)
-
.*
соответствия все прежде __
-
__
двойные подчеркивания соответствий. -
[a-zA-z0-9_]*
соответствия все алфавитно-цифровые и одинарное подчеркивание _
символы. *
средства этот класс символов может быть нулевой длиной. -
\.
соответствия единственная точка. Для соответствия точке (.
) буквально, необходимо выйти из него в регулярном выражении с помощью обратной косой черты; без выхода это соответствует любому отдельному символу. - В эти
(png|jpg|jpeg)
, пара круглых скобок делает его как группу соответствий. Будет соответствовать png
или (|
) jpg
или jpeg
. -
$
привязка, соответствует концу строки (или имена файлов в этом случае)
<час> -delete
<час> .*__[a-zA-z0-9_]*\.(png|jpg|jpeg)
-
.*
соответствия все прежде __
-
__
двойные подчеркивания соответствий. -
[a-zA-z0-9_]*
соответствия все алфавитно-цифровые и одинарное подчеркивание _
символы. *
средства этот класс символов может быть нулевой длиной. -
\.
соответствия единственная точка. Для соответствия точке (.
) буквально, необходимо выйти из него в регулярном выражении с помощью обратной косой черты; без выхода это соответствует любому отдельному символу. - В эти
(png|jpg|jpeg)
, пара круглых скобок делает его как группу соответствий. Будет соответствовать png
или (|
) jpg
или jpeg
. -
$
привязка, соответствует концу строки (или имена файлов в этом случае)
<час>
можно использовать другие типы -regextype
(который работается) вместо "posix-egrep" как:
"posix-расширенный" или "posix-awk".
-regex pattern
File name matches regular expression pattern. This is a match on the whole path, not a search. For
example, to match a file named './fubar3', you can use the regular expression '.*bar.' or '.*b.*3',
but not 'f.*r3'. The regular expressions understood by find are by default Emacs Regular Expres‐
sions, but this can be changed with the -regextype option.
-iregex pattern
Like -regex, but the match is case insensitive.
-regextype type
Changes the regular expression syntax understood by -regex and -iregex tests which occur later on the
command line. Currently-implemented types are emacs (this is the default), posix-awk, posix-basic,
posix-egrep and posix-extended.
-delete
Delete files
В конце добавляют -delete
переключатель для управления к удалению подобранных файлов:
find . -type f -regextype "posix-egrep" -iregex '.*__[a-zA-z0-9_]*\.(png|jpg|jpeg) <час> .*__[a-zA-z0-9_]*\.(png|jpg|jpeg)
-
.*
соответствия все прежде __
-
__
двойные подчеркивания соответствий. -
[a-zA-z0-9_]*
соответствия все алфавитно-цифровые и одинарное подчеркивание _
символы. *
средства этот класс символов может быть нулевой длиной. -
\.
соответствия единственная точка. Для соответствия точке (.
) буквально, необходимо выйти из него в регулярном выражении с помощью обратной косой черты; без выхода это соответствует любому отдельному символу. - В эти
(png|jpg|jpeg)
, пара круглых скобок делает его как группу соответствий. Будет соответствовать png
или (|
) jpg
или jpeg
. -
$
привязка, соответствует концу строки (или имена файлов в этом случае)
<час> -delete
<час> .*__[a-zA-z0-9_]*\.(png|jpg|jpeg)
.*
соответствия все прежде __
__
двойные подчеркивания соответствий. [a-zA-z0-9_]*
соответствия все алфавитно-цифровые и одинарное подчеркивание _
символы. *
средства этот класс символов может быть нулевой длиной. \.
соответствия единственная точка. Для соответствия точке (.
) буквально, необходимо выйти из него в регулярном выражении с помощью обратной косой черты; без выхода это соответствует любому отдельному символу. (png|jpg|jpeg)
, пара круглых скобок делает его как группу соответствий. Будет соответствовать png
или (|
) jpg
или jpeg
. $
привязка, соответствует концу строки (или имена файлов в этом случае) <час>
Попробуйте следующую команду:
cd <dir>
find . -type f -iname \*.jpg -delete
-type ----> введите тип файла (__ [a-zA-z0-9]. (Png | jpg | jpeg)) и использовать команду.
Надеюсь, это поможет.
cd <dir>
find . -type f -iname \*__*.jpg -delete