あなたがシステムで作業していて、誰かが
ls
コマンド(/bin/ls
)。現在のディレクトリ内のファイルのリストを取得するにはどうすればよいですか?それを試してみてください。
私は多くの方法を試し、インターネットでも検索しましたが、何もしませんでした。 ls
コマンドの横で、すべてのファイルを一覧表示するためにどのコマンドを使用できるかを確認したいと思います。
echo *
...は、Bourne互換シェルのファイルグロビングによって現在のフォルダー内のファイルを表示します。
これにより、すべてのファイルが1レベル下にリストされます。
echo */*
Bashでは、globstarが設定されている場合(shopt -s globstar
で設定、shopt -u globstar
で設定解除)の場合、すべてのファイルが再帰的にリストされます。
echo **
find -maxdepth 1
find -maxdepth 1 -ls
もっと少なく TAB TAB
finds -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
ls
のように見せるために、Bashのfor
ループを使用します。
for i in *; do echo $i; done
それがうまくいかない場合は、Python ;)
:
python -c "import glob; print '\n'.join(glob.glob('/home/*'))"
find .
ただし、必要な制限パラメータを入力することをお勧めします。
Good ol 'vim;)(並べ替え、参照など)
vim .
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
真夜中の司令官がインストールされていると想定
echo
バージョンに似ていますが、読みやすくするために1行に1つのエントリが出力されます。
printf %s\\n ./*
または
printf '%s\n' ./*
再帰的に(bash 4+の場合。他のシェルでは、設定するために別のオプションが必要か、globstarがデフォルトで有効になっています):
shopt -s globstar
printf %s\\n ./**/*
dir
コマンドはどうですか? :)
/bin/dir
まあ、emacsのシェルモードでlsを使用できなかった場合は、eshellモードに切り替えるか、単にdiredに切り替えます。
Bashシェル(または完了した他のシェル)を起動している場合は、「*」を入力してからタブを押すだけです。
または、私は通常Xを起動しているので、「nautilus。」を実行することもできますが、それは人間にとっては問題ありません。
/ usr/bin/lsattrを試すこともできます
しかし、現実の世界では、そのようなことが私に起こった場合、私は本当にをどうしますか?
Sudo apt-get install --reinstall coreutils
Bash、または同様のタブ補完を備えたシェルでは、実際のコマンドを使用する必要はまったくありません。wibble
の後に2つのタブが続くと、現在のディレクトリにあるファイルのリストが表示され、wibble /bin/
の後には2つのタブに/ binの残りが表示されます。私はかつてこの状況で自分自身を見つけ(実際には、/ binを他のものとともに完全に殺しました)、echo *
アプローチ@STATUS_ACCESS_DENIEDの使用を開始しましたが、最終的にタブ補完がより便利であることがわかりました。
tree
のもう1つの方法は、ここでは言及されていませんが、再帰的に実行され、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.