私のアーカイブのニーズの詳細のため、固体のtar.gzアーカイブには満足できず、代わりに7zを使用します。
これを行うには、次のコマンドを使用します。
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
~/my/folder/
内のすべてのアーカイブを~/my/folder.7z
ファイルとして作成します。
しかし、~/my/folder/.hiddenFolder
はそのときアーカイブに入りません。これを修正するには? *
はすべてのファイルとフォルダを返すことになっていますか?
単一のディレクトリの内容が必要な場合、簡単な方法は最初にそれに変更することです:
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
あなたが見たのは、*
が.
で始まらないファイルの名前のリストに展開されることです。これが文書化された動作であり、.
で始まる名前のファイルが非表示になっていると言われる主な理由です(もう1つは、ls
がデフォルトで表示しないことです)。
ディレクトリ内のすべてのファイルを一覧表示する便利なポータブルな方法はありません。使用できます
~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*
ただし、いずれかのパターンに一致するファイルがない場合、パターンは展開されないままになります。 bashでは、dotglob
オプションを設定して、先頭の.
を特別に処理しないようにすることができます(.
と..
はまだ一致から除外されています)。
shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
Ksh、またはextglob
オプションを設定した場合はbash(またはksh_glob
オプションを設定した場合はzsh)では、.
と..
を除くすべてのファイルに一致するパターンを記述できます。
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)
Zshでは、.
をパターンで特別に処理してはならないという簡単な方法があります。
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/.
ディレクトリ構造の例
test1
├── .hidden
└── normal.txt
0 directories, 2 files
次のコマンドを試してください
すべてのコンテンツを含むルートフォルダー。
7za a test1_a.7z ~/test1/
与える
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2017-08-06 09:23:51 D.... 0 0 test1
2017-08-06 09:23:44 ....A 0 0 test1/.hidden
2017-08-06 09:23:51 ....A 0 0 test1/normal.txt
------------------- ----- ------------ ------------ ------------------------
2017-08-06 09:23:51 0 0 2 files, 1 folders
ルートフォルダも隠しファイルもありません
7za a test1_b.7z ~/test1/*
与える
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2017-08-06 09:23:51 ....A 0 0 normal.txt
------------------- ----- ------------ ------------ ------------------------
2017-08-06 09:23:51 0 0 1 files
ルートフォルダーはありませんが、隠しファイルが含まれています(これは通常必要です)
7za a test1_c.7z ~/test1/.
与える
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2017-08-06 09:23:44 ....A 0 0 .hidden
2017-08-06 09:23:51 ....A 0 0 normal.txt
------------------- ----- ------------ ------------ ------------------------
2017-08-06 09:23:51 0 0 2 files
番号、 *
はすべてのファイルを返すとは限りません。表示されているものだけを返します。
より簡単な解決策は次のとおりです。
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .