我正在尝试使用Bash在硬盘上查找所有文本文件,根据大小对其进行排序,并导出其路径的CSV列表。
这类似于SO上的其他几个线程。可能与此最接近:How sort find result by file sizes
但是我不太了解以前建议的代码的一些变体。
此行允许我按文件类型搜索并将结果导出为路径名,但是我不清楚如何将其与其他必要的功能结合(即按大小对路径名进行排序)。
find / -type f -name '*.txt' > ~/Desktop/sorted.csv
我正在MacOS上执行此操作,而我对Bash还是陌生的,因此到目前为止,该解决方案很难确定。
编辑: 使用其他代码,我可以将其拼凑起来。据我了解,“ find”命令查找所有带有txt扩展名的文件,并显示带有路径的文件信息的完整列表。 “排序”选择第5个“字段”,即(总是?)文件大小,并相应地对信息进行排序。然后使用“ awk”来打印字段9到13 ...这是一个问题。这是打印路径的零碎部分,这可能是因为路径的每一位在这一点上都占据了自己的字段。
find / -type f -name '*.txt' -exec ls -al {} \;|sort -k 5 -n| awk '{ print $9, $10, $11, $12, $13 }' > ~/Desktop/sorts/sorted.txt
只需添加最后一个添加项,这要感谢RobC的评论: 我希望最终的CSV文件只是一个已排序路径的列表。文件大小不再包括在内。升/降并不重要。
答案 0 :(得分:0)
这项工作:
find / -type f -name '*.txt' -exec du -k {} + | sort -rn > ~/Desktop/sorted.csv