0


0

BASHファイル属性体操:完全なパスと特権を持つファイルを簡単に取得するにはどうすればよいですか?

コマンドラインの親愛なる皆さん、

1行に2つのエントリを含むファイルを生成するディレクトリツリーがあります。各ファイルのフルパスと、そのファイルの対応する特権です。

たとえば、1行に次が含まれる場合があります。

/v1.6.0.24/lib/mylib.jar -r-xr-xr-x

左側の列を生成する最良の方法は、* find のようです。 ただし、 ls *にはファイル名のリストを読み取る機能やstdinを取得する機能がないように見えるため、これを行うスクリプトに頼らなければならないようです。 …​面倒。

見つかった各ファイルに対して何らかの方法でコマンドを実行する人々を見つけることができたと確信していましたが、今朝はそれを理解できないようであるので気をつけなければなりません!

誰でも?

上記のファイルの読み取りに関しては、ファイル名にスペースが含まれている可能性があるため、既存のコマンドラインツールを使用してフィールドを右から左に数える方法があると便利です。たとえば、* cut 。 ただし、 cut *は左から先に進むため、負の数を使用して右から番号付けを開始するわけではありません(私にとって最も明らかな構文のように)。 …​ それを行うためのプログラムを作成する必要なく、簡単な方法はありますか?

事前に感謝し、あなたが提供するかもしれない例を説明してくれて特に感謝します!

おかげで、RT

4 回答


3


GNU findutils 4.2.5+:

find -printf "$PWD"'/%p %M\n'


1


stat -c %A file

ファイルのファイル許可を出力します。

何かのようなもの:

find . -exec echo -ne '{}\t\t' ';' -exec stat -c %A {} ';'

後のフォーマットが間違ったバージョンになります。

すべてをテーブルに揃える必要があるため、はるかに複雑になります。 「列」コマンドを調べてください。 TBH出力要件を少し緩和するだけです。 SHでの出力の書式設定は、面倒な作業です。


0


lsおよびawkでも実行できます。

ls -l -d $PWD/* | awk '{print $9 " " $1}' > my_files.txt


0


バッシュ4

shopt -s globstar
for file in /path/**
do
    stat -c "%n %A" "$file"
done