Linux-ファイルをリストするコマンド(lsを除く)


27

あなたがシステムで作業していて、誰かが誤ってlsコマンドを削除したと想像してください (/bin/ls)。現在のディレクトリにあるファイルのリストを取得するにはどうすればよいですか?それを試してみてください。

多くの方法を試しましたが、インターネットでも検索しましたが、何も検索しませんでした。lsコマンドの横に、すべてのファイルをリストするためにどのコマンドを使用できるかを尋ねたいと思います。

回答:


35
echo *

... Bourne互換シェルでのファイルグロビングにより、現在のフォルダー内のファイルを表示します。

これにより、すべてのファイルが1レベル下にリストされます。

echo */*

Bashでは、globstarが設定されている場合(で設定、shopt -s globstarで設定解除shopt -u globstar)、すべてのファイルが再帰的にリストされます。

echo **

10
宿題のecho *練習以外にも、プログラムを実行できないようにシステムを台無しにしてしまった場合(たとえば、削除libc.soまたはld.so)、実際には実行中のシェルがあります。
ジル 'SO-悪である停止

3
bash4(と思う)とzshでは、echo **/*これを再帰的に行うこともできます。
リード

@Reid:それをテストします。素敵な発見。
0xC0000022L

良いもの、@ Gilles。特定のブート条件で/ usrまたは/ binにアクセスできなかった古いDECシステムと、「cat」および「ls」機能自体を作成するために必要なブートスクリプトからそれを学びました。
アルセージュ

1
素敵な、私は最初にecho *についてee.ryerson.ca/~elf/hack/recovery.html
マークマッキンストリ

23
find -maxdepth 1 
find -maxdepth 1 -ls

もっと少なく TAB TAB

-lsスイッチは/ bin / lsに依存せず、独自の形式を持ち、詳細情報を表示します。

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

別の可能性を示す詳細は、 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

のようlsにするには、Bashのforループを使用します。

for i in *; do echo $i; done

それがうまくいかない場合は、Pythonを試してみ;)ます:

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

import glob; print '\n'.join(glob.glob('/home/*'))同様に動作します。
アルセージュ


6
find .

おそらく、必要な制限パラメーターを入力する必要があります。


3

lsattr ./*

getfacl ./* 権限も表示されます

grep -l '.*' ./*

awk 'FNR==1 {print FILENAME}' ./* GNU awkで動作します

debugfs /dev/sdX sdXをlsを実行したいパーティションに置き換えれば、debugfs内でlsできます

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 真夜中の司令官がインストールされていると仮定します


3

echoバージョンに似ていますが、読みやすくするために1行に1つのエントリを出力します。

printf %s\\n ./*

または

printf '%s\n' ./*

再帰的に(bash 4+の場合、他のシェルでは、設定するために別のオプションが必要か、デフォルトでglobstarが有効になっています):

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

「/ *」は必要ありません。設定されている**場合、すべてのディレクトリに単純に再帰しますglobstar。に変更するだけprintf '%s' **です。


1

まあ、emacsのシェルモード内でlsを使用できなかった場合は、eshellモードに切り替えるか、単にdiredにするだけです。


1

bashシェル(または補完機能を備えた他のシェル)を起動している場合、おそらく '*'を入力してからTabキーを押すだけです。

または、通常Xを起動しているので、「nautilus。」を実行することもできますが、それは人間向けです。

/ usr / bin / lsattrを試すこともできます

しかし、現実の世界では、そのようなことが起こった場合に私が本当にすることは確かに次のようになります。

sudo apt-get install --reinstall coreutils

1

bash、または同様のタブ補完を備えたシェルでは、実際のコマンドを使用する必要はまったくありませんwibble。2つのタブを押すと現在のディレクトリ内のファイルのリストwibble /bin/が表示され、2つのタブを押すと何が表示されます/ binの左側。私はかつてこの状況に陥り(実際、/ binを完全に他の何かと一緒に殺した)、echo *@ STATUS_ACCESS_DENIEDが提案したアプローチを使用し始めましたが、最終的にはタブ補完がより便利であることがわかりました。


0

treeここで言及されていない別の方法は、再帰的に実行され、findやlsとは異なり、エラーがありません(:Permission denied、などNot a directory)、ファイルをxargs他のコマンドにフィードしたい場合に絶対パスを取得します

tree -fai /pathYouWantToList >listOfFiles.list

オプションの意味:

-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.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.