【发布时间】:2021-04-19 10:51:32
【问题描述】:
我有这个命令的输出ls -lhp --group-directories-first:
drwxrwxr-x 2 aName aName 4.0K Jan 11 18:46 Desktop/
drwxr-xr-x 3 aName aName 4.0K Jan 13 16:43 Documents/
drwxr-xr-x 2 aName aName 4.0K Jan 12 18:47 Downloads/
drwxr-xr-x 2 aName aName 4.0K Jan 11 16:08 Music/
-rw-rw-r-- 1 aName aName 4.6M Jan 14 11:28 '2021-01-14 11-28-39.mov'
-rw-rw-r-- 1 aName aName 2.2M Jan 14 11:55 '2021-01-14 11-55-20.mkv'
我只想要这个:
Desktop/ 4.0K
Documents/ 4.0K
Downloads/ 4.0K
Music/ 4.0K
'2021-01-14 11-28-39.mov' 4.6M
'2021-01-14 11-55-20.mkv' 2.2M
所以我可以awk 仅用于第 9 列和第 5 列:
ls -lhp --group-directories-first | awk -F' ' '{print $9 " " $5}'
但是当文件名包含空格时,它的字段会分开,空格后面的所有内容都会丢失。
感谢您的智慧和时间!
【问题讨论】:
-
考虑
du -sh * -
哇。整洁的!除了这不会让我从文件中看到目录,并且可能比 ls 慢很多
-
或者,
awk 'BEGIN{FPAT="[^[:space:]'"'"']+|'"'"'[^'"'"']+'"'"'"} {print $9" "$5}' -
这太疯狂了@WiktorStribiżew,介意做出回应解释它是如何工作的,我会给你解决方案?