リスト/検索コマンド内の各固有の権限のファイルを作成し、その権限の各ディレクトリ/ファイル パス インスタンスを出力する Bash スクリプト

リスト/検索コマンド内の各固有の権限のファイルを作成し、その権限の各ディレクトリ/ファイル パス インスタンスを出力する Bash スクリプト

私は、ディレクトリ ツリー内のすべてのファイル/ディレクトリの権限とフル パスを取得する find コマンドを実行し、各固有の権限ごとにファイルを作成し、各ファイルのフル パスをその権限ファイルに出力できる bash スクリプトを作成しようとしています。そうすれば、将来的にはこれらのファイルを読み取り、スクリプトを実行したときと同じ権限で使用できるようになります。

例えば:

drwxrwxrwx /home/user/testDirectory  
-rwxrwxrwx /home/user/testDirectory/testFile  
drwxr-xr-x /home/user/testDirectory/directory2  
-rwxr-xr-x /home/user/testDirectory/directory2/test2 

上記の場合、それぞれ 2 行を含む 2 つのファイル (例:777.txtおよび) が作成されます。755.txt

固有の権限ごとにファイルを作成し、完全なファイル パスを送信するロジックに苦労しています。

これまでのところ、配列は必要かどうか疑問ですが、d フラグを無視するために sort コマンドで -k 1.2 を使用して、権限による配列のソートを試してみました。

declare -a PERMS

i=0

while read line
do
     PERMS[$i]="$line"
     (( i++ ))
done < <( find /opt/sas94 -printf ""%M/" "%p/"\n")

答え1

これを試して:

#!/bin/bash

while read file; do
        stat -c '%A %n' "$file" >> $(stat -c '%a' "$file").txt
done < <(find "$1")

使用法:

./script.sh /path/to/directory
  • 最初のものはstat -c '%A %n' "$file"ファイルの権限とパスを出力します。例:-rw-rw-rw- /foo/bar
  • 2番目はstat -c '%a' "$file"権限を8進数で出力します。例:666

最初の出力は、stat2 番目の出力で作成されたファイル名にstat接尾辞を付けて追加されます.txt

関連情報