Дата модификации печати с помощью Bash - PullRequest
0 голосов
/ 05 февраля 2019

У меня возникли проблемы с получением bash-скрипта для печати даты изменения файла, это мой код:

files=$(ls -R)    

for file in ${files}
do
  modification=$(date +%D -r ${file})
    echo ${modification}
done

Проблема в том, что когда я запускаю скрипт, все на одном уровнепоскольку сценарий печатает свою дату, но если файл на один уровень ниже или более, я получаю сообщение об ошибке, как вы можете видеть в следующем выводе:

File .: was modified on 
File 1.txt was modified on 02/05/19
File 2.txt was modified on 02/05/19
File 3.txt was modified on 02/05/19
File folder was modified on 02/05/19
File GetFiles.sh was modified on 02/05/19
date: ./folder:: No such file or directory
File ./folder: was modified on 
date: folder1.txt: No such file or directory
File folder1.txt was modified on 
date: folder2.txt: No such file or directory
File folder2.txt was modified on 
date: folder3.txt: No such file or directory
File folder3.txt was modified on 

1 Ответ

0 голосов
/ 06 февраля 2019
shopt -s globstar
for i in **; do date +"$i was modified on %D" -r "$i"; done

С man bash:

globstar: Если установлено, шаблон **, используемый в контексте расширения имени пути, будет соответствовать всем файлам и нулю или более каталогов и подкаталогов.Если за шаблоном следует символ /, совпадут только каталоги и подкаталоги.


См .: help shopt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...