我必须完成以下任务:
对于给定的文件名列表和给定的目录,为每个文件名打印它出现的所有子目录。子目录将根据文件的创建日期以降序打印。
我不知道该怎么做
最佳答案
for file in $(< filelist)
do
find -name "$file" -printf "%C@ %h\n" | sort -rn | sed 's/^[0-9.]* //'
done
- $(
- printf %C@ 打印自 1.1.1970 以来的秒数
- %h 打印没有文件名的前导目录
- sort -n 对数值进行排序,-r 倒序
- sed 删除排序后的时间
问题:
- 从这个问题来看,没有迹象表明要打印文件名本身,这对于现实世界的场景来说是不寻常的。这很容易解决。
- 带有换行符的路径名以及其他奇特字符(如垂直制表符、换页符等)处理不当。
关于linux - 如何列出包含文件的所有子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5663025/