Linux - lệnh để liệt kê các tập tin (trừ ls)


27

Hãy tưởng tượng bạn đang làm việc trên một hệ thống và ai đó đã vô tình xóa lslệnh ( /bin/ls). Làm thế nào bạn có thể nhận được một danh sách các tập tin trong thư mục hiện tại? Thử nó.

Tôi đã thử nhiều phương pháp và cũng đã tìm kiếm trên Internet nhưng không có gì. Tôi muốn hỏi bên cạnh lslệnh chúng ta có thể sử dụng lệnh nào để liệt kê tất cả các tệp.

Câu trả lời:


35
echo *

... sẽ hiển thị các tệp trong thư mục hiện tại thông qua tập tin toàn cầu trên các vỏ tương thích Bourne.

Điều này liệt kê tất cả các tập tin xuống một cấp:

echo */*

Trong Bash, nếu globalstar được đặt (được đặt shopt -s globstar, không đặt với shopt -u globstar), điều này sẽ liệt kê tất cả các tệp theo cách đệ quy:

echo **

10
Ngoài bài tập về nhà, echo *rất hữu ích trong thực tế, khi bạn làm hỏng hệ thống của mình để bạn không thể thực hiện bất kỳ chương trình nào (ví dụ: bạn đã gỡ bỏ libc.sohoặc ld.so), nhưng bạn vẫn có một vỏ đang chạy.
Gilles 'SO- ngừng trở nên xấu xa'

3
Trong bash4 (tôi nghĩ) và zsh, bạn cũng có thể sử dụng echo **/*để làm điều này một cách đệ quy.
Reid

@Reid: Sẽ kiểm tra điều đó. Đẹp tìm thấy.
0xC0000022L

Tốt, @Gilles. Đã học được rằng từ các hệ thống DEC cũ không thể truy cập vào / usr hoặc / bin trong một số điều kiện khởi động và tập lệnh khởi động cần thiết để tự thực hiện các chức năng 'cat' và 'ls'.
Arcege

1
thật tuyệt, lần đầu tiên tôi học về tiếng vang * từ ee.ryerson.ca/~elf/hack/recovery.html
Mark McKinstry

23
find -maxdepth 1 
find -maxdepth 1 -ls

ít hơn TAB TAB

công tắc find -ls độc lập với / bin / ls và có định dạng riêng và hiển thị thông tin chi tiết:

127432    0 drwxr-xr-x   2 stefan   stefan         48 Apr  8 22:51 ./temp/falsch/.hiddenfalsch
127447    0 lrwxrwxrwx   1 stefan   stefan          9 Apr  8 22:51 ./temp/falsch/linkfalsch -> subfalsch
127427    0 drwxr-xr-x   2 stefan   stefan         48 Apr  8 22:51 ./temp/.hiddenmusik

khác, chi tiết cho thấy khả năng, là stat

stat *
  File: `halx0o'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 807h/2055d  Inode: 102701      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  stefan)   Gid: ( 1000/  stefan)
Access: 2011-04-08 22:38:18.000000000 +0200
Modify: 2009-07-23 03:16:15.000000000 +0200
Change: 2011-04-09 23:29:13.000000000 +0200
  File: `ho ho ho'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 807h/2055d  Inode: 115835      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  stefan)   Gid: ( 1000/  stefan)
Access: 2011-04-08 22:38:18.000000000 +0200
Modify: 2010-07-24 14:12:48.000000000 +0200
Change: 2011-04-09 23:29:13.000000000 +0200

10

Để làm cho nó trông giống như ls, tôi sử dụng forvòng lặp của Bash :

for i in *; do echo $i; done

Nếu điều đó không hiệu quả, tôi sẽ thử Python ;):

python -c "import glob; print '\n'.join(glob.glob('/home/*'))"

import glob; print '\n'.join(glob.glob('/home/*'))cũng sẽ làm việc như vậy.
Arcege

6

Good ol 'vim;) (với sắp xếp, duyệt, v.v.)

vim .

6
find .

Mặc dù bạn có thể muốn nhập bất kỳ tham số giới hạn nào bạn cần.


3

lsattr ./*

getfacl ./* cũng sẽ hiển thị quyền

grep -l '.*' ./*

awk 'FNR==1 {print FILENAME}' ./* làm việc với GNU awk

debugfs /dev/sdX thay thế sdX bằng bất kỳ phân vùng nào bạn muốn thực hiện ls, sau đó bạn có thể ls bên trong debugfs

debugfs:  cd /
debugfs:  ls -l
      2   40755 (2)      0      0    4096  6-Apr-2011 01:01 .
      2   40755 (2)      0      0    4096  6-Apr-2011 01:01 ..
     11   40700 (2)      0      0   16384  5-Jul-2010 09:59 lost+found
 2392065   40755 (2)      0      0    4096  5-Jul-2010 09:59 boot
 2228225   40755 (2)      0      0    4096  5-Jul-2010 09:59 sys
 1376257   40755 (2)      0      0    4096  5-Jul-2010 09:59 proc
 4915201   40755 (2)      0      0    4096  5-Jul-2010 09:59 dev
 3473409   40755 (2)      0      0   12288 10-Apr-2011 22:05 etc
  98305  100644 (1)      0      0       0  6-Jul-2010 12:05 .autofsck
 3342337   40755 (2)      0      0    4096  5-Apr-2011 15:05 var
 3932161   41777 (2)      0      0    4096 10-Apr-2011 22:11 tmp
  ..........
debugfs:  

lynx ./

mc giả sử bạn đã cài đặt chỉ huy nửa đêm


3

Tương tự như echophiên bản, nhưng điều này in ra một mục trên mỗi dòng để dễ đọc hơn:

printf %s\\n ./*

hoặc là

printf '%s\n' ./*

Đệ quy (đối với bash 4+; các shell khác cần một tùy chọn khác để đặt nó hoặc có sao được bật theo mặc định):

shopt -s globstar
printf %s\\n ./**/*

Không cần '/ *', một đơn giản **sẽ lặp lại vào tất cả các thư mục nếu globstarđược đặt. Chỉ cần thay đổi thành printf '%s' **.


1

Chà, nếu tôi không thể sử dụng ls trong chế độ shell của emacs, tôi có thể chuyển sang chế độ eshell hoặc chỉ là một đường dẫn.


1

Nếu tôi đã bắt đầu bash shell (hoặc bất kỳ shell nào khác khi hoàn thành), tôi có thể chỉ cần gõ '*' sau đó vào tab.

Hoặc như tôi thường bắt đầu X, tôi cũng có thể chỉ làm 'nautilus.', Nhưng OK đó là cho con người.

Tôi cũng có thể thử / usr / bin / lsattr

Nhưng trong thế giới thực, những gì tôi thực sự sẽ làm nếu điều đó xảy ra với tôi chắc chắn sẽ là:

sudo apt-get install --reinstall coreutils

1

Trong bash hoặc shell có hoàn thành tab tương tự, bạn hoàn toàn không cần sử dụng một lệnh thực sự: wibbletheo sau là hai tab sẽ giúp bạn có một danh sách các tệp trong thư mục hiện tại và wibble /bin/theo sau là hai tab sẽ hiển thị cho bạn những gì bên trái của / thùng. Tôi đã từng thấy mình trong tình huống này (thực ra, tôi đã giết / bin hoàn toàn cùng với một số thứ khác) và bắt đầu sử dụng echo *phương pháp @STATUS_ACCESS_DENIED đề xuất, nhưng cuối cùng thấy việc hoàn thành tab thuận tiện hơn.


0

Một cách khác tree, không được đề cập ở bất cứ đâu ở đây, nó đi theo cách đệ quy và không giống như tìm hoặc bạn không có bất kỳ lỗi nào (như : Permission denied, Not a directory) , bạn cũng có được đường dẫn tuyệt đối trong trường hợp bạn muốn đưa các tệp đến xargshoặc lệnh khác

tree -fai /pathYouWantToList >listOfFiles.list

Các tùy chọn có nghĩa:

-a     All  files  are  printed.  By default tree does not print hidden files (those beginning with a dot
       `.').  In no event does tree print the file system constructs `.'  (current  directory)  and  `..'
       (previous directory).

-i     Makes tree not print the indentation lines, useful when used in conjunction with the -f option.

-f     Prints the full path prefix for each file.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.