Để sử dụng tương tác nhanh chóng trên các cây thư mục không quá lớn, shopt -s globstar
thực sự tốt. Toàn cầu không thể lọc các thư mục dựa trên loại, nhưng nếu bạn sử dụng nó ls -d
thì ls
sẽ chỉ in tên thư mục, thay vì nội dung.
Giả sử ll
bí danh của bạn bao gồm -lh
:
# with shopt -s globstar in your .bashrc
ll -rSd **/*
sẽ cung cấp cho bạn đầu ra như thế này (từ thư mục golf-code của tôi), nhưng với tô sáng màu (để dễ dàng xem các thư mục hơn). Lưu ý rằng sắp xếp theo kích thước tệp đã xảy ra trên các thư mục con.
drwxr-xr-x 1 peter peter 70 Jun 8 07:56 casexchg
...
drwxr-xr-x 1 peter peter 342 Mar 13 18:47 parity-party
-rw-r--r-- 1 peter peter 387 Jul 29 2017 likely.cpp
-rw-r--r-- 1 peter peter 416 Aug 31 2017 true-binary.asm~
-rw-r--r-- 1 peter peter 447 Feb 23 20:14 weight-of-zero.asm
...
-rw-r--r-- 1 peter peter 6.4K Jun 1 2017 string-exponential.asm
-rwxr-xr-x 1 peter peter 6.7K Aug 31 2017 true-binary
-rwxr-xr-x 1 peter peter 6.8K Sep 17 2017 dizzy-integer
-rw-r--r-- 1 peter peter 7.5K Jul 24 2017 fibonacci/fibonacci-1G.v3-working-32b-stack-except-output.asm
-rw-r--r-- 1 peter peter 8.4K Jul 25 2017 fibonacci/perf.32bit-pop-114limb.sub-cmc.1G~
-rw-r--r-- 1 peter peter 8.4K Jul 25 2017 fibonacci/perf.32bit-pop-114limb.sub-cmc.1G
-rwxr-xr-x 1 peter peter 8.4K May 19 04:29 a.out
-rw-r--r-- 1 peter peter 8.9K Jul 25 2017 fibonacci/perf.python-xnor-2n
-rw-r--r-- 1 peter peter 9.5K Jul 26 2017 fibonacci/fibonacci-1G-performance.asm
-rwxr-xr-x 1 peter peter 9.6K Apr 12 23:25 empty-args
-rw-r--r-- 1 peter peter 9.7K Dec 18 17:00 bubblesort.asm
-rwxr-xr-x 1 peter peter 9.9K Feb 6 23:34 parity-party/a.out
-rw-r--r-- 1 peter peter 9.9K Jul 25 2017 fibonacci/fibonacci-1G-performance.asm~
...
Bạn có thể lọc các thư mục bằng cách chuyển qua grep -v '^d'
Đôi khi bạn có thể sử dụng một quả cầu chỉ khớp với các tệp và không phải thư mục, nếu tên tệp của bạn có mẫu. ví dụ ll -rSd **/*.jpg
, hoặc thậm chí **/*.*
hoạt động nếu không có tên thư mục nào của bạn có .
trong đó và tất cả các tệp bạn muốn làm .
(Đối với những người có nền tảng DOS: không có gì kỳ diệu về *.*
Unix. Nó chỉ phù hợp với bất kỳ mục nhập thư mục nào có chứa một dấu chấm bằng chữ.
@d PLAY chỉ ra rằng bạn sẽ cần shopt -s dotglob
nó để khớp với tất cả các tệp.
Với GNU find
Nếu không có quá nhiều tệp phù hợp với một ls
dòng lệnh, find -exec ls {} +
sẽ đặt tất cả chúng vào dòng lệnh nơi ls
có thể sắp xếp chúng.
find -not -type d -exec ls --color -lrSh {} +
Sử dụng -not -type d
thay vì -type f
tránh bỏ qua các liên kết tượng trưng, đường ống được đặt tên, ổ cắm, tệp thiết bị và bất cứ thứ gì khác mà bạn có trong thư mục của mình.
Với du
:
du -ach | sort -h
....
4.0K x86-modedetect-polyglot.o
8.0K ascii-compress-base.asm
8.0K dizzy-integer
8.0K stopwatch-rdtsc.asm
8.0K string-exponential.asm
8.0K true-binary
12K a.out
12K bubblesort.asm
12K casexchg
12K empty-args
100K parity-party
220K fibonacci
628K total
Bây giờ tên thư mục được sắp xếp vào danh sách để tổng cộng tất cả nội dung của chúng, nhưng các tệp riêng lẻ vẫn được bao gồm.
sort -h
, aka --human-numeric-sort
, sắp xếp các số có hậu tố kích thước như du -h
in. Nó hoàn hảo để sử dụng với du
.
Tôi thường sử dụng du -sch * | sort -h
, hoặc */
để chỉ nhận các thư mục.
du -sch **/* | sort -h
sẽ cung cấp cho bạn đầu ra ở trên, nếu bạn quên rằng du
có một -a
tùy chọn.
(Tôi chỉ dành thời gian để tra cứu vì tôi đang đăng câu trả lời. Để sử dụng tương tác, có lẽ tôi sẽ chỉ sử dụng du -sch **/*
.