Как я могу удалить несколько файлов в Linux, созданных в одно и то же время? Как я могу обойтись без даты? У файла разные имена.

У меня есть эти файлы .txt:

-rw-r--r-- 1 root root        54 Jan  6 17:28 file1.txt
-rw-r--r-- 1 root root        33 Jan  6 17:28 file2.txt
-rw-r--r-- 1 root root        24 Jan  6 18:05 file3.txt
-rw-r--r-- 1 root root         0 Jan  6 17:28 file4.txt
-rw-r--r-- 1 root root         0 Jan  6 17:28 file5.txt

Как удалить все файлы одной командой?

4
Bhushan Ahire 7 Янв 2016 в 12:05

3 ответа

Лучший ответ

Просто используйте rm -f file*.txt, чтобы удалить все файлы, которые начинаются с файла и заканчиваются расширением .txt

2
Jens 7 Янв 2016 в 11:20

Если вам известен протокол изменения файла, вы можете удалить все файлы с помощью команды find. Считайте, что последний раз файл был изменен десять минут назад. Тогда вы можете использовать,

find -iname "*.txt" -mmin 10 -ok rm {} \;

Если вам не нужно запрашивать перед удалением, используйте -exec.

 find -iname "*.txt" -mmin 10 -exec rm {} \;

Если вам нужно удалить файлы, используя время доступа, вы можете использовать -amin

0
Karthikeyan.R.S 7 Янв 2016 в 09:20

Вы можете использовать команду find и указать временной диапазон. В вашем примере: если вы хотите найти все файлы с измененной меткой времени от 6 января 17:28, вы можете сделать что-то вроде:

find . -type f -newermt '2016-01-06 17:28' ! -newermt '2016-01-06 17:29'

Если вы хотите удалить их, просто используйте параметр find exec:

find . -type f -newermt '2016-01-06 17:28' ! -newermt '2016-01-06 17:29' -exec rm {} \;

Вы также можете включить -name '* .txt', если хотите обрабатывать только файлы * .txt, и также проверьте параметр maxdepth, если вы не хотите обрабатывать подкаталоги

4
JanS 7 Янв 2016 в 09:17