使用文件夹和文件大小递归列出文件
List files recursively with folder and file size
我想以纯文本形式共享目录摘要,其中包含文件名和大小。
This thread 显示具有人类可读文件大小的文件列表,例如在 macOS 上:
$ du -h -d 10
14G ./190803 Aaah
13G ./190804 (no sound)
This post 列出了具有漂亮树的文件结构:
$ find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
.
|____.DS_Store
|____190803 Aaah
| |____190803 Aaah.mp4
| |____DSC_0011.MOV
| |____DSC_0012.MOV
| |____DSC_0013.MOV
| |____DSC_0014.MOV
| |____DSC_0015.MOV
| |____DSC_0016.MOV
|____190804 (no sound)
| |_____DSC0018.MOV
| |_____DSC0019.MOV
| |_____DSC0020.MOV
| |_____DSC0021.MOV
| |_____DSC0022.MOV
| |_____DSC0023.MOV
| |____DSC_0017.MOV
如何将两者结合起来并在后一个树状显示中在每个项目、文件或文件夹旁边显示人类可读的文件大小?
试试这个:
find . -print0 |
xargs -0 -I% du -h "%" |
awk ' {
size =
= ""
print [=10=], "(" size ")" }
' |
sed -e 's;[^/]*/;|____;g;s;____|; |;g'
如果你想在行的前面增加文件大小,你可以试试这个:
find . -print0 | xargs -0 -I% du -h "%" | awk ' { size = ; = ""; print [=11=], size }' | sed -e 's;[^/]*/;|____;g;s;____|; |;g' | awk ' {size=$NF ; $NF=""; printf("(%5s) %s\n", size, [=11=]) }'
print0
和 -0
处理带引号的案例文件路径,如 Getting error "xargs unterminated quote" when tried to print the number of lines in terminal .
你可以试试这个:
for f in $(ls -R); do wc -c $f;done
我想以纯文本形式共享目录摘要,其中包含文件名和大小。
This thread 显示具有人类可读文件大小的文件列表,例如在 macOS 上:
$ du -h -d 10 14G ./190803 Aaah 13G ./190804 (no sound)
This post 列出了具有漂亮树的文件结构:
$ find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' . |____.DS_Store |____190803 Aaah | |____190803 Aaah.mp4 | |____DSC_0011.MOV | |____DSC_0012.MOV | |____DSC_0013.MOV | |____DSC_0014.MOV | |____DSC_0015.MOV | |____DSC_0016.MOV |____190804 (no sound) | |_____DSC0018.MOV | |_____DSC0019.MOV | |_____DSC0020.MOV | |_____DSC0021.MOV | |_____DSC0022.MOV | |_____DSC0023.MOV | |____DSC_0017.MOV
如何将两者结合起来并在后一个树状显示中在每个项目、文件或文件夹旁边显示人类可读的文件大小?
试试这个:
find . -print0 |
xargs -0 -I% du -h "%" |
awk ' {
size =
= ""
print [=10=], "(" size ")" }
' |
sed -e 's;[^/]*/;|____;g;s;____|; |;g'
如果你想在行的前面增加文件大小,你可以试试这个:
find . -print0 | xargs -0 -I% du -h "%" | awk ' { size = ; = ""; print [=11=], size }' | sed -e 's;[^/]*/;|____;g;s;____|; |;g' | awk ' {size=$NF ; $NF=""; printf("(%5s) %s\n", size, [=11=]) }'
print0
和 -0
处理带引号的案例文件路径,如 Getting error "xargs unterminated quote" when tried to print the number of lines in terminal .
你可以试试这个:
for f in $(ls -R); do wc -c $f;done