Bashスクリプトは、list / findコマンドの各一意の権限のファイルを生成し、その権限の各ディレクトリ/ファイルパスインスタンスを印刷します。

Bashスクリプトは、list / findコマンドの各一意の権限のファイルを生成し、その権限の各ディレクトリ/ファイルパスインスタンスを印刷します。

ディレクトリツリー内のすべてのファイル/ディレクトリの権限とフルパスを取得し、各固有の権限のファイルを作成し、そのファイルの各フルファイルパスを印刷するために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

各一意の権限ごとにファイルを生成し、ファイル全体のパスを送信するロジックのために問題が発生しています。

これまでに私が持っているもの(配列が必要かどうか疑問に思っていますが、権限で配列をソートし、sortコマンドで-k 1.2を使用してdフラグを無視できます):

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

関連情報