Как я могу получить подкаталог, который был изменен в последний раз, в каталоге? Я использую сценарий оболочки в дистрибутиве Linux (Ubuntu).

0
Norbert Willhelm 12 Апр 2014 в 00:52

2 ответа

Лучший ответ

Похоже, вам нужны параметры ls

-t sort by modification time, newest first

И показывать только каталоги, использовать что-то вроде этого ответа предлагает Список только каталогов с использованием ls в bash : Экзамен

ls -d */

И если вы хотите, чтобы каждый каталог был перечислен в одной строке (если в ваших именах файлов / каталогов нет символов новой строки или сумасшедших символов), я бы добавил -1 Итак, все вместе это должно перечислить каталоги в текущем каталоге с последним измененным временем на вершине

ls -1td */

И только единственный самый новый каталог:

ls -1td */ | head -n 1

Или, если вы хотите сравнить с конкретным временем, вы можете использовать find и его параметры, такие как -cmin -cnewer -ctime -mmin -mtime, и find может обрабатывать сумасшедшие имена, такие как перевод строки, пробелы и т. Д. С параметрами имен с завершающим нулем, такими как -print0

1
Community 23 Май 2017 в 11:57

Насколько изменен подкаталог, значения не имеет. Вы знаете название подкаталога? Получите его содержимое так:

files=$(ls subdir-name)
for file in ${files}; do
    echo "I see there is a file named ${file}"
done
0
Oldest Software Guy 11 Апр 2014 в 22:31