Удалите все файлы без ключевого слова в имени файла

[113249] То же место, что и в предыдущих версиях. [113535]/usr/local/include/xorg[113536], но большая часть того, что вам нужно, вероятно, находится в [113537]/usr/local/include/X11[113538] из xproto и libX11...

Также в [113539]pkg info -lx xorg-server[113540] будут перечислены файлы, установленные xorg-сервером, что поможет направить вас в нужное русло.[113252].

1
18.08.2014, 06:49
2 ответа

Вы можете использовать расширение имени файла Bash's :

rm !(*_orig.jpg)

Синтаксис !(pattern):

Совпадает с чем угодно, кроме одного из данных шаблонов.

так что это распространяется на все имена файлов, которые не совпадают с *_orig.jpg, которые Вы можете удалить (или убрать с дороги). Вам необходимо включить опцию extglob, которую Вы можете сделать с помощью shopt -s extglob заранее (в противном случае Вы получите ошибку формы "событие не найдено"). Однако, обычно она включена по умолчанию.


Альтернативно, и portable, Вы можете просто временно переместить файлы, которые хотите сохранить, и удалить остальные:

mkdir tmp
mv *_orig.jpg tmp
rm *.jpg
mv tmp/*.jpg .
rmdir tmp

Есть опции, использующие find а также:

find . -type f ! -name '*_orig.jpg' -exec rm '{}' +

которые будут находить любые (обычные) файлы рекурсивно в текущем каталоге, которые не имеют имени *_orig. jpg и удалите их; это лучший (но не единственный) вариант, если не все файлы находятся непосредственно в одном каталоге.

.
4
27.01.2020, 23:17

POSIX путь:

$ find . \( ! -name . -prune -a -name "*.jpg" -a ! -name "*_orig.jpg" \) -exec rm -- {} +
1
27.01.2020, 23:17

Теги

Похожие вопросы