我在获取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
shopt -s globstar
for i in **; do date +"$i was modified on %D" -r "$i"; done
从man bash
:
globstar
: 如果设置,则路径名扩展上下文中使用的模式 ** 将匹配所有文件和零或 更多目录和子目录。 如果模式后跟/,则仅目录和 子目录匹配。
请参阅:help shopt