如何使用 BASH 命令显示由一个分隔到多个空格的特定列?



我有不同的数据,这些数据是在下面显示的不同日期和时间创建的。

-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

相关内容

最新更新