我需要查找所有扩展名为 .txt 的文件及其文件大小

我需要查找所有扩展名为 .txt 的文件及其文件大小

类似 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

相关内容