ディレクトリを与えられた私は、サイズと変更された時間のタブを持つすべてのファイルの再帰的なリストを取得するためのbashの1ライナーを探しています簡単な解析のために分離。次のようなものがあります。サイズと最終変更時刻を含む再帰的リストファイルの方法は?
cows/betsy 145700 2011-03-02 08:27
horses/silver 109895 2011-06-04 17:43
ディレクトリを与えられた私は、サイズと変更された時間のタブを持つすべてのファイルの再帰的なリストを取得するためのbashの1ライナーを探しています簡単な解析のために分離。次のようなものがあります。サイズと最終変更時刻を含む再帰的リストファイルの方法は?
cows/betsy 145700 2011-03-02 08:27
horses/silver 109895 2011-06-04 17:43
フル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
を使用することができます読み取り可能な日付。
findは、ディレクトリを再帰的に検索するのに最適です。
find /dir/ -printf '%p\t%s\t%t\n'
が利用できるフォーマット指定子に完全な詳細については、man find
を参照してください:あなたは-printf
アクションを使用してカスタマイズされた出力を印刷することができ、Linuxマシン上で
find /dir/ -ls
:-ls
アクションは、その結果ls -l
形式で出力するよう指示します-printf
となります。 (これはPOSIX互換性がありませんし、他のUNIXフレーバーで利用できない場合があります。)
find * -type f -printf '%p\t%s\t%TY-%Tm-%Td %Tk:%TM\n'
あなたは固定幅フィールドではなく、タブを好む場合は、%10s
に%s
を変更するようなものを行うことができます。
find * ...
を使用して、各ファイル名の先頭に "./"を付けないようにしました。気にしない場合は*
(.
で始まるファイルも表示されます)ではなく.
を使用してください。また、出力をsed 's/^\.\///'
にパイプすることもできます。
出力順は任意です。注文リストが必要な場合は、sort
までパイプを通してください。
'-printf'プライマリはPOSIXではありません。いくつかの 'find'実装(特にMac OS Xの実装)にはそれが含まれていません。 –
@Adam:良い点。 (もちろん、MacOS上にGNU findutilsをインストールすることはできますが、それは実用的ではないかもしれませんし、努力する価値もあります)。 –
あなたは
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
乾杯!
'-printf'プライマリはPOSIXではありません。いくつかの 'find'実装(特にMac OS Xの実装)にはそれが含まれていません。 –