У меня есть несколько файл на моем каталоге Ubuntu. Я хочу использовать терминальную команду для удаления всех файлов кроме файлов, которые сгенерированы сегодня.
Сегодня 15.10.2019, и мои файлы:
...
field_20191012152850.php
field_20191013022128.php
field_20191014095433.php
field_20191015101257.php
Имена файлов содержат 4 раздела. Первый раздел является "полем _ ", вторая часть является датой (например, 20191014 = 14.10.2019), третья часть время (например, 231241 = 23:12:41), и Четвертая часть" .php".
Мы можем удалить те файлы информацией о файле, например, датой и временем поколения файла или именем файла, например, "field_20191014095433.php".
Я могу удалить сегодня файлы следующей командой:
rm field_$(date +%Y%m%d)[0-9]{6}.php
Но я хочу удалить все файлы кроме сегодня файлов информацией о поколении файла или именем файла. Мы можем также использовать файл удара вместо короткой команды.
Можно сделать это с find
:
find /path/to/folder -type f -not -name "field_$(date +%Y%m%d)*.php" -delete
Это будет рекурсивно искать /path/to/folder
файлы соответствия.
, Если Вы только должны найти для нахождения файлов в /path/to/folder
, не ища в его подкаталогах, просто добавляют эти -maxdepth -1
флаг:
find /path/to/folder -maxdepth 1 -type f -not -name "field_$(date +%Y%m%d)*.php" -delete
Можно использовать extglob
для исключения шаблона:
shopt -s extglob
rm field_!($(date +%Y%m%d)*).php
Вы могли бы хотеть выключить extglob впоследствии с помощью shopt -u extglob
.