bash - 使用 awk 获取文件的完整路径名及其大小
问题描述
我想获取file names followed by their size
所有大小为 MB 或 GB 的文件。到目前为止,我已经做了很多:
LIST=$(ls -lh -d -1 $PWD/{*,} | awk '{ print $9":"$5 }')
for i in $LIST
do
if [[ $( echo "$i" | cut -f2 -d: | egrep "M|G" | wc -l) -ne 0 ]]
# egrep not working, only finds M
then
echo "$i" >> bigfiles
fi
done
我得到的是:
amit@C0deDaedalus:~$ test/findbig
/home/amit/Batch:3.8M
/home/amit/Black:3.6M
我想要的是:
amit@C0deDaedalus:~$ test/findbig
/home/amit/Batch File Programming.pdf:3.8M
/home/amit/Black Panther - Legend Has It ( Instrumental ).opus:3.6M
filenames
基本上,除了我得到的不完整之外,一切都很好。只显示第一个单词。我无法弄清楚逻辑或语法是否有问题,但我认为它与awk
.
那么,如何在输出中获取文件的完整路径名(中间有空格)?
我在 awk 中尝试过循环技巧,但不知道如何让两列都适合。
解决方案
问题是由于文件名中的空格。for 循环使用空格作为分隔符。因此,列表中的第一项将是“/home/amit/Batch”,第二项是“File”,依此类推。
您可以使用 while 循环代替 for,例如:
ls -lh -d -1 $PWD/{*,} | awk '{ print $9":"$5 }' | while read LINE
do
echo ${LINE}
# do your stuff here
done
顺便说一句,如果您的唯一目的是找出大文件,您可能需要查看磁盘使用命令:
$ du -a | sort -rn | head
推荐阅读
- wordpress - ACF 和 Wordpress - 查找与帖子相关的所有帖子?
- python - Python 请求返回 503 响应
- kubernetes - 每个 Kubernetes pod 的唯一外部 IP
- javascript - 将一个单元格值拖放到一个由 PHP 生成的 html 表格中
- javascript - 使用 Angular 向文本添加动态样式
- video - FFMPEG 失败,只有两个输入帧
- python - pandas 通过采样读取 csv
- c# - 如何反序列化 OData JSON 错误消息?
- sml - 在 SML 中声明函数的类型
- javascript - 在 Javascript 中移动字符串