Shell Script для проверки подкаталога [закрыт]

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

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

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

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

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

1
задан 16 December 2014 в 21:22

1 ответ

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

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

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

echo `some command`

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

0
ответ дан 24 May 2018 в 01:58

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

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