1

Linux の bash では、マウントされた共有を再帰的にトラバースし、各ファイルでコマンドを実行して、ファイルの種類とサイズ、アクセス許可などを取得し、これらすべてをファイルに出力するコマンドをどのように記述しますか?

4

4 に答える 4

1

CIFS 共有マウントは、Linux シェルでは通常のディレクトリ ツリーのように見えます。
したがって、必要に応じて検索するコマンドは汎用的です。
ベースディレクトリから、

find . -type f -exec ls -lsrt {} \; > file.txt

わかりました、これはファイルタイプの詳細を提供しません。
これは-exec file filename、各ファイルで実行できます。

于 2009-07-22T04:21:31.867 に答える
0
find $(mount -t smbfs | awk '{print $3}') -mount -type f -ls -execdir file {} \;
...
33597911    4 -rw-rw-r--   2 peter    peter           5 Dec  6 00:09 ./test.d\ ir/base
./base: ASCII text
  3662    4 -rw-rw-r--   2 peter    peter           4 Dec  6 02:26 ./test.txt...
./test.txt...: ASCII text
  3661    0 -rw-rw-r--   2 peter    peter           0 Dec  6 02:45 ./foo.txt
./foo.txt: empty
...

-exec file {} + を使用すると、複数の引数を指定して file が 1 回実行されますが、出力は find の出力とうまくインターリーブされません-ls。(GNU find は現在、バグの回避策により-execdir {} +、 と同じように動作します。出力とその上の出力にフル パスが必要な場合に使用します。-execdir {} \;-exec file {} \;file-ls

find -lsls -l最初の 2 つのフィールドとしていくつかのブロックの inode が含まれているため、output は とまったく同じではありません。

于 2009-12-09T20:47:10.533 に答える
0
mount -v | awk '/smbfs/{
    cmd="ls -lsR "$3
    while((cmd | getline d)>0){
        print d "->file "$3
    }   
    close(cmd)
}'
于 2009-07-22T05:48:49.743 に答える