我有不同的数据,这些数据是在下面显示的不同日期和时间创建的。
-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`
我无法获取所有文件名。我注意到月和日之间的多个空格导致了这样的问题。针对与此类似的案例的任何通用解决方案?我真诚地感谢您的时间和帮助。
答案 0 :(得分:1)
如果您只是在文件名之后,使用find
会将您带到那里:
find *.lammpstrj -maxdepth 1 -type f
答案 1 :(得分:1)
如果您只想查看它们:ls -1 *.lammpstrj
如果您想迭代它们:for file in *.lammpstrj; do ...
如果您想存储它们以供日后使用:
files=(*.lammpstrj)
# now do stuff with them, for example print them:
printf "%s\n" "${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 %s\n" \
"$filename" \
"$size" \
"$(date -d "@$mtime" "+%Y-%m-%d %H:%M:%S")"
done
或在-printf
find