に基づいてこれ、tarを使用して、現在のディレクトリ内のすべての隠しファイルにアクセスできます。
ls -A | egrep '^\.' | tar cvf ./test.tar -T -
しかし、すべての隠しディレクトリまたは現在のディレクトリのすべての隠しディレクトリとファイルをどのようにtarできますか?
に基づいてこれ、ls -ap | egrep "^\..*/$" | tar -zcvf hiddens.tar.gz -T -
問題を解決する必要があります。しかしそれは真実ではない。このコマンドは単に空の tar.gz アーカイブを生成します。したがって、tarはこのコマンドを介してどのディレクトリも表示できません。
答え1
シェルスクリプトや複雑なコマンドラインではls
結果を予測できないため、通常は使用しないことをお勧めします。
find
現在のディレクトリがホームディレクトリの場合は、次のコマンドが~
機能します。
cd ~
このコマンドは隠しファイルのみをインポートします。
LC_ALL=C find -mindepth 1 -maxdepth 1 -type f -name '.*' -print0 | tar --null -cvzf hidden-files.tar.gz -T -
このコマンドは、隠しディレクトリツリー(サブディレクトリとファイルを含む)のみを「のみ」インポートします。
LC_ALL=C find -mindepth 1 -maxdepth 1 -type d -name '.*' -print0 | tar --null -cvzf hidden-dirs.tar.gz -T -
ディレクトリツリーにシンボリックリンクがあると、予期しない結果が発生する可能性があります。
答え2
でzsh
すべての隠しディレクトリ(およびその内容)を圧縮します。
tar zcf file.tar.gz .*(/)
(この標準はシンボリックリンクも含むという点で.*/
zshとは異なり.*(/)
、いくつかのtar
実装では/
、glob拡張によって生成されたパスに追加された場合はシンボリックリンクの代わりにディレクトリ(およびすべてのコンテンツ)にパッケージ化されるため、そうでない可能性があります。.
そして、多くのシェルに関する以下の注意事項も参照してください..
。
隠しディレクトリと通常のファイルを圧縮するには:
tar zcf file.tar.gz .*(/,.)
タイプ(ディレクトリ、一般、シンボリックリンク、fifos...)に関係なく、すべての隠しファイルを圧縮します。
tar zcf file.tar.gz .*
このシェルはfish
、シェル、mksh、またはForsythシェルに基づく他のシェルと組み合わせて使用することもできますが、他のほとんどのシェルでは使用できません。これらの他のシェルにはglobの拡張が含まれている.
ためです。..
ただし、ksh93
次のことができます。
(FIGNORE='@(.|..)'; tar zcf file.tar.gz .*)
そしてbash
:
(shopt -s dotglob failglob; tar zcf file.tar.gz [.]*)
またはbash 5.2以降を使用:
(shopt -s globskipdots failglob; tar zcf file.tar.gz .*)
(グローバル拡張でglobskipdots
発生.
し、決して返されません。このオプションは、持っているか含めることは決して役に立たないため、..
常に有効にしたい場合があります)。.
..