我有不同的数据,这些数据是在下面显示的不同日期和时间创建的。
-rw-rw-r-- 1 user user 157559823 May 23 09:39 1x100.lammpstrj
-rw-rw-r-- 1 user user 157560063 Jul 2 08:22 2x200.lammpstrj
-rw-rw-r-- 1 user user 157561559 Jul 7 13:13 3x250.lammpstrj
-rw-rw-r-- 1 user user 157560934 Jul 9 10:10 4x300.lammpstrj
-rw-rw-r-- 1 user user 157566774 Jul 19 11:29 5x350.lammpstrj
我希望显示最后一列,它们是后缀为 .lammpstrj 的文件名。如果我使用
`ls -latr *.lammpstrj | cut -d ' ' -f 9`
我无法获取所有文件名。我注意到月和日之间的多个空格导致了这样的问题。对于与此类似的情况,有什么通用解决方案吗?我衷心感谢您的时间和帮助。
如果您只想查看它们:ls -1 *.lammpstrj
如果要遍历它们:for file in *.lammpstrj; do ...
如果要存储它们以供以后使用:
files=(*.lammpstrj)
# now do stuff with them, for example print them:
printf "%sn" "${files[@]}"
# or something else
for file in "${files[@]}"; do ...
要获取有关文件的元数据,请使用stat
:
stat -c "%Y %s %n" *.lammpstrj | while read -r mtime size filename; do
printf "%s has size %d and was last modified %sn"
"$filename"
"$size"
"$(date -d "@$mtime" "+%Y-%m-%d %H:%M:%S")"
done
或者在find
中使用-printf
如果你只是在文件名之后,使用find
会让你到达那里:
find *.lammpstrj -maxdepth 1 -type f