Сценарий оболочки для проверки наличия подкаталога [закрыто]

A. Я использовал следующий код, чтобы получить дату изменения файла. Но при этом также выбираются подкаталоги и, таким образом, возвращается ошибка. Как я могу это исправить?

for file in $1/*; do
        echo `stat -c %y $file | cut -d ' ' -f1`
done

$ 1 - это каталог, который я передаю.

Б. Также есть способ сделать это. Что мне нужно передать каталог и диапазон дат в качестве аргумента командной строки и указать файл и дату изменения, которая находится в этом диапазоне дат.

Например, output.sh / home / user / desktop 2014-10-07 2014-11-17 должен перечислить все файлы в этом каталоге, которые были изменены за этот интервал времени.

-1
задан 16 December 2014 в 10:22

2 ответа

Относительно части A Вашего вопроса вот ссылка к стандартным тестам файла.

, В частности, то, что можно сделать:

for file in $1/*; do
    [ ! -d "$file" ] && echo `stat -c %y $file | cut -d ' ' -f1`
done

Что касается части B, см. этот stackoverflow вопрос.

0
ответ дан 6 October 2019 в 10:50

Для части A, более эффективного подхода:

find $1 -maxdepth 1 ! -type d -exec stat -c "%y" {} + | cut -d' ' -f1

find превосходно при отфильтровывании на основе типа, и exec с + должен выполнить гораздо меньше stat процесс. При передаче по каналу целого вывода к cut средства мы должны работать cut только однажды. И нет действительно никакой потребности сделать

echo `some command`

, единственное преимущество преобразовывает многострочный вывод в одну строку, которая не применима к Вашему случаю так или иначе.

0
ответ дан 6 October 2019 в 10:50

Другие вопросы по тегам:

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