类似 du -hs *txt 并找到 30k avbd
我不需要输出它们的扩展名,只需要大小和文件名。
答案1
怎么样:
IFS=$'\n'
for f in `du -hs *.txt`;do echo $f | sed 's/\(.*\)\.txt/\1/';done
IFS 部分是必需的,这样 for 循环才能同时处理整行。还请注意命令“du -hs *.txt”部分周围的反引号。反引号按钮应位于制表符按钮上方。
答案2
ls
:
交互式使用的简单解决方案是“ell ess minus ell”,其中第 5 列包含文件大小(以字节为单位)
ls -l *.txt
或者如果你想要“人类可读的格式”
ls -lh *.txt
您可以在 中找到更多详细信息man ls
。请注意ls
不是推荐用于自动化(在 shellscripts 等中)。
find
:
您的问题很模糊,因此下面列出了用于查找和打印扩展名为 的文本文件的命令txt
。选择您想要的格式或某种组合。您可以在 中找到更多详细信息man find
。
原始列表仅包含当前目录中的文本文件的名称,例如不包括目录和符号链接,但包括子目录中的文件
find . -type f -name "*.txt"
包含大小(字节)和文件名的列表
find . -type f -name "*.txt" -printf "%9s '%p'\n"
按尺寸排序的尺寸和名称列表
find . -type f -name "*.txt" -printf "%9s '%p'\n" | sort -n
按名称排序的尺寸和名称列表
find . -type f -name "*.txt" -printf "%9s '%p'\n" | sort -k2
不包括子目录中的文件的列表,其大小和名称按大小排序
find . -maxdepth 1 -type f -name "*.txt" -printf "%9s '%p'\n" | sort -n
相应的列表,其中每个文件名中的点和扩展名都被删除
find . -maxdepth 1 -type f -name "*.txt" -printf "%9s '%p'\n"|sed "s/\.txt'$/'/"|sort -n
删除了找到文件的起始点名称的相应列表
find . -maxdepth 1 -type f -name "*.txt" -printf "%9s '%P'\n"|sed "s/\.txt'$/'/"|sort -n