2011-08-06 10 views

答えて

9

フルls -l出力したくない場合は、必要な情報を取得するためにstat(1)を使用することができ、あなたがfind(1)にを使用することができます再帰的なディレクトリリストを取得します。あなたがこれを行うことができ、1行にそれらを組み合わせる:

# Find all regular files under the current directory and print out their 
# filenames, sizes, and last modified times 
find . -type f -exec stat -f '%N %z %Sm' '{}' + 

あなたは出力がより多くの解析可能なようにしたい場合は、あなたがtime_tとしての代わりに、人間としての最終更新時刻を取得するために%Smの代わりに%mを使用することができます読み取り可能な日付。

5

findは、ディレクトリを再帰的に検索するのに最適です。

find /dir/ -printf '%p\t%s\t%t\n' 

が利用できるフォーマット指定子に完全な詳細については、man findを参照してください:あなたは-printfアクションを使用してカスタマイズされた出力を印刷することができ、Linuxマシン上で

find /dir/ -ls 

-lsアクションは、その結果ls -l形式で出力するよう指示します-printfとなります。 (これはPOSIX互換性がありませんし、他のUNIXフレーバーで利用できない場合があります。)

+1

'-printf'プライマリはPOSIXではありません。いくつかの 'find'実装(特にMac OS Xの実装)にはそれが含まれていません。 –

2

find * -type f -printf '%p\t%s\t%TY-%Tm-%Td %Tk:%TM\n'

あなたは固定幅フィールドではなく、タブを好む場合は、%10s%sを変更するようなものを行うことができます。

find * ...を使用して、各ファイル名の先頭に "./"を付けないようにしました。気にしない場合は*.で始まるファイルも表示されます)ではなく.を使用してください。また、出力をsed 's/^\.\///'にパイプすることもできます。

出力順は任意です。注文リストが必要な場合は、sortまでパイプを通してください。

+0

'-printf'プライマリはPOSIXではありません。いくつかの 'find'実装(特にMac OS Xの実装)にはそれが含まれていません。 –

+0

@Adam:良い点。 (もちろん、MacOS上にGNU findutilsをインストールすることはできますが、それは実用的ではないかもしれませんし、努力する価値もあります)。 –

1

あなたは

find /from_dir/* -print0 | xargs -0 stat -c “%n|%A|%a|%U|%G” > permissions_list.txt
 

リストのファイルとディレクトリは、コマンドをstatをするために通過すると

permissions_list.txtというファイルにすべての情報を置く「/ from_dir」と呼ばれ、現在のフォルダからの再帰的なリストについては、これを試みることができます

「%nを|%のA |%|%U |%G」あなたのファイルに次のような結果が得られます:

from_
 dir|drwxr-sr-x|2755|root|root
  
from_dir/filename|-rw-r–r–|644|root|root 

乾杯!