tar ファイルのフォルダー内のファイル数を繰り返し計算します。

tar ファイルのフォルダー内のファイル数を繰り返し計算します。

以前の質問をさらに拡張して、tarファイル内のファイル数を計算しました(協会)新しい質問にtarファイルのサブフォルダ内のファイル数を数える方法。私が望む最後のもの:

  1. ファイルを含むフォルダーのリスト
  2. ファイル数の計算以内にそのフォルダ

私の例tarファイルのリスト tar -tvf myfile.tar下のように見える(実際のtarファイルにはより多くのファイルとディレクトリがあります)。合計2つのフォルダがあり、そのうちフォルダ_ファイル_1その中には3つのファイルがあり、フォルダ_ファイル_2その中には4つのファイルがあります。

drwxrwxrwx someuser/users      0 2017-08-07 11:43 ./root_folder/subfolder/folder_files_1/
-rwxr-xr-x someuser/users 538962 2017-08-07 11:43 ./root_folder/subfolder/folder_files_1/i716266.MRDC.270
-rwxr-xr-x someuser/users 538962 2017-08-07 11:43 ./root_folder/subfolder/folder_files_1/i716267.MRDC.266
-rwxr-xr-x someuser/users 538944 2017-08-07 11:43 ./root_folder/subfolder/folder_files_1/i716268.MRDC.287
drwxrwxrwx someuser/users      0 2017-08-07 11:50 ./root_folder/subfolder/folder_files_2/
-rwxr-xr-x someuser/users 538696 2017-08-07 11:50 ./root_folder/subfolder/folder_files_2/i717157.MRDC.8
-rwxr-xr-x someuser/users 538694 2017-08-07 11:50 ./root_folder/subfolder/folder_files_2/i717158.MRDC.4
-rwxr-xr-x someuser/users 538692 2017-08-07 11:50 ./root_folder/subfolder/folder_files_2/i717159.MRDC.34
-rwxr-xr-x someuser/users 538696 2017-08-07 11:50 ./root_folder/subfolder/folder_files_2/i717160.MRDC.5

私が検索した最も近い解決策は、使用awk後に私を指していましたtar(参考資料を参照)。ここそしてここ)。

tar tvf myfile.tar | awk '/^d/ {print $0; /$6/; getline; file_no++} END {print file_no}'

/$6/そのフォルダを一致させるだけです./root_folder/subfolder/folder_files_1/。ただし、このファイルに含まれるファイルの数を正確に数えることはまだ不可能です。一致ディレクトリ、すなわち。フォルダ file_1、フォルダ file_2

私のコードを修正する方法に関する提案はありますか?

ベストアンサー1

別のオプション:

tar tf archive.tar |
    awk '
        { if (gsub("[^/]+$", "")) { h[$0]++} }
        END { for (f in h) { printf "%d\t%s\n", h[f], f } }
    '

最初のawkステートメントはファイル名を削除し、結果のディレクトリパスのインスタンス数を計算します。 2番目は、入力が完全に消費されたときに実行されます(例:標準入力)パスリストとその数を印刷します。

必要に応じて、コンテンツ全体を1行に統合できます(コンテンツ全体をリンクするだけです)。読みやすいようにここで分けました。

tarballに対して実行した結果:

4       ./root_folder/subfolder/folder_files_2/
3       ./root_folder/subfolder/folder_files_1/

おすすめ記事