以前の質問をさらに拡張して、tarファイル内のファイル数を計算しました(協会)新しい質問にtarファイルのサブフォルダ内のファイル数を数える方法。私が望む最後のもの:
- ファイルを含むフォルダーのリスト
- ファイル数の計算以内にそのフォルダ
私の例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/