unzip -l
すべてのディレクトリとサブディレクトリ/ファイルを表示します。
-maxdepth 1
コマンドと同様に、zipファイルサイズの最初のディレクトリ構造のみをリストしたいと思いますfind
。
スクリプト全体を使わずにこれを行う方法はありますか?
答え1
UnZip 6.00
Debianベースのディストリビューションでは、以下-x
のようにワイルドカードでオプションを使用できますman unzip
。
[-x xfile(s)] An optional list of archive members to be excluded from process‐ ing. Since wildcard characters normally match (`/') directory separators (for exceptions see the option -W), this option may be used to exclude any files that are in subdirectories. For example, ``unzip foo *.[ch] -x */*'' would extract all C source files in the main directory, but none in any subdirectories. Without the -x option, all C source files in all directories within the zipfile would be extracted.
例えば、与えられた
$ unzip -l dir
Archive: dir.zip
Length Date Time Name
--------- ---------- ----- ----
0 2023-03-11 07:57 dir/
24 2023-03-11 12:50 dir/file
1464 2023-03-04 12:51 dir/input.csv
187 2023-03-06 09:03 dir/input
0 2023-02-28 10:25 dir/subdir3/
0 2023-02-28 10:25 dir/subdir3/Files.txt
55 2023-02-28 10:51 dir/file2
26 2023-03-10 20:00 dir/utf-16BE.txt
0 2023-02-28 10:25 dir/subdir2/
0 2023-02-28 10:25 dir/subdir2/File.txt
0 2023-02-28 10:25 dir/subdir1/
0 2023-02-28 10:25 dir/subdir1/file.txt
585 2023-03-01 06:54 dir/source.CSV
115 2023-02-28 10:50 dir/file1
211 2023-03-10 09:01 dir/01-netcfg.yaml
--------- -------
2667 15 files
それから
$ unzip -l dir -x '*/*/*'
Archive: dir.zip
Length Date Time Name
--------- ---------- ----- ----
0 2023-03-11 07:57 dir/
24 2023-03-11 12:50 dir/file
1464 2023-03-04 12:51 dir/input.csv
187 2023-03-06 09:03 dir/input
55 2023-02-28 10:51 dir/file2
26 2023-03-10 20:00 dir/utf-16BE.txt
585 2023-03-01 06:54 dir/source.CSV
115 2023-02-28 10:50 dir/file1
211 2023-03-10 09:01 dir/01-netcfg.yaml
--------- -------
2667 9 files
答え2
このように、MCVE方法:
curl -s https://gist.githubusercontent.com/sputnick-dev/1d2303e5fb75af8792f828ff33c127af/raw/e42cd4f56ce1b430752269cff2571342b19eb58a/gistfile1.txt | bash
cd /tmp
zip -r rand_dirs.zip rand_dirs
unzip -l rand_dirs.zip |
grep -oP '^\s+\d+\s+\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}\s+\K[^/]+/[^/]+' |
sort -u
出力
rand_dirs/Yqol
rand_dirs/yT3oVke
rand_dirs/yt7p
rand_dirs/z
rand_dirs/z8Tx
rand_dirs/ZaQ7cE
rand_dirs/zeWgeCr8RbS
rand_dirs/zVf4
[...]