あなたがシステムで作業していて、誰かが誤って
ls
コマンドを削除したと想像してください (/bin/ls
)。現在のディレクトリにあるファイルのリストを取得するにはどうすればよいですか?それを試してみてください。
多くの方法を試しましたが、インターネットでも検索しましたが、何も検索しませんでした。ls
コマンドの横に、すべてのファイルをリストするためにどのコマンドを使用できるかを尋ねたいと思います。
あなたがシステムで作業していて、誰かが誤って
ls
コマンドを削除したと想像してください (/bin/ls
)。現在のディレクトリにあるファイルのリストを取得するにはどうすればよいですか?それを試してみてください。
多くの方法を試しましたが、インターネットでも検索しましたが、何も検索しませんでした。ls
コマンドの横に、すべてのファイルをリストするためにどのコマンドを使用できるかを尋ねたいと思います。
回答:
echo *
... Bourne互換シェルでのファイルグロビングにより、現在のフォルダー内のファイルを表示します。
これにより、すべてのファイルが1レベル下にリストされます。
echo */*
Bashでは、globstarが設定されている場合(で設定、shopt -s globstar
で設定解除shopt -u globstar
)、すべてのファイルが再帰的にリストされます。
echo **
echo **/*
これを再帰的に行うこともできます。
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
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
真夜中の司令官がインストールされていると仮定します
まあ、emacsのシェルモード内でlsを使用できなかった場合は、eshellモードに切り替えるか、単にdiredにするだけです。
bash、または同様のタブ補完を備えたシェルでは、実際のコマンドを使用する必要はまったくありませんwibble
。2つのタブを押すと現在のディレクトリ内のファイルのリストwibble /bin/
が表示され、2つのタブを押すと何が表示されます/ binの左側。私はかつてこの状況に陥り(実際、/ binを完全に他の何かと一緒に殺した)、echo *
@ STATUS_ACCESS_DENIEDが提案したアプローチを使用し始めましたが、最終的にはタブ補完がより便利であることがわかりました。
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.
echo *
練習以外にも、プログラムを実行できないようにシステムを台無しにしてしまった場合(たとえば、削除libc.so
またはld.so
)、実際には実行中のシェルがあります。