.
(ドット)で始まるファイルを含む、フォルダ内のすべてのファイルとサブディレクトリを圧縮する必要があります。
私はというフォルダにあり、synthesis
その下のすべてのファイルとサブディレクトリを圧縮する必要があります(synthesis
フォルダ自体ではありません)。フォルダにはファイルを含むsynthesis
サブディレクトリがあります。.sopc_builder
私は次のコマンドを試しました
zip -r synthesis.zip *
結果をsynthesis.zip
別のフォルダにコピーし、ファイルにzipの内容を一覧表示しました。
unzip -l synthesis.zip > filelist.txt
リストにファイルがありませんfilelist.txt
。.sopc_builder
いくつかの記事ではLinuxコマンドの内容を見ましたが、shopt
実際には理解していませんでした。
私が使用しているLinuxのバージョンは、会社のRed Hat Enterprise Linux Server 7.9です。
よろしくお願いします、グラディ
答え1
それは次のようになります。
zip -r file.zip ./
ファイルが現在のディレクトリから呼び出されている/
場合は、標準入力として扱われるバグを解決するには後続が必要です。-
globに隠しファイルを含めるには(norではありません.
)、glob(glob修飾子)を..
使用できますが、次のようなさまざまな理由でエラーが発生します。zsh
*(D)
D
dotglob
zip -r file.zip *(D)
zip -r file.zip *
-
ファイル名がで始まると失敗します。役に立ちますが、--
という名前の場合はそうではありません-
。./*(D)
zip
デフォルトでは、引数をワイルドカードとして扱います(MS-DOS型プログラムに近い)。したがって、ファイル名にワイルドカード文字(特に)が含まれていると、[...]
エラーが発生する可能性があります。これを無効にするには、-nw
任意のファイル名を渡すときに使用します。
$ ls -AR
.:
'*' ... bar fifo| .foo -h '[x]'
- 'a'$'\n''b' dir/ file.zip foo link@
./dir:
-
$ rm -f file.zip; zip -r file.zip ./
zip warning: ignoring FIFO (Named Pipe) - use -FI to read: ./link
zip warning: ignoring FIFO (Named Pipe) - use -FI to read: ./fifo
adding: bar (stored 0%)
adding: [x] (stored 0%)
adding: ... (stored 0%)
adding: .foo (stored 0%)
adding: a^Jb (stored 0%)
adding: * (stored 0%)
adding: - (stored 0%)
adding: foo (stored 0%)
adding: dir/ (stored 0%)
adding: dir/- (stored 0%)
adding: -h (stored 0%)
$ rm -f file.zip; zip -nw -r file.zip ./*(D)
zip warning: ignoring FIFO (Named Pipe) - use -FI to read: ./fifo
zip warning: ignoring FIFO (Named Pipe) - use -FI to read: ./link
adding: * (stored 0%)
adding: - (stored 0%)
adding: ... (stored 0%)
adding: a^Jb (stored 0%)
adding: bar (stored 0%)
adding: dir/ (stored 0%)
adding: dir/- (stored 0%)
adding: .foo (stored 0%)
adding: foo (stored 0%)
adding: -h (stored 0%)
adding: [x] (stored 0%)
基本的にシンボリックリンクとfifoがどのように処理されるかをご覧ください。この形式は、Microsoft Windowsなどの他のオペレーティングシステムで使用するためにファイルをパッケージ化したい場合にzip
よく使用されます。 Unixファイルのアーカイブを作成するにはtar
。
答え2
1つの方法は、次のものをzip
組み合わせることですfind
。
$ cd the/dir/you/want/to/zip
$ find . -print | zip test -@
adding: file.txt (stored 0%)
adding: .hidden/ (stored 0%)
adding: .hidden/file2.txt (stored 0%)
-@ file lists. If a file list is specified as -@ [Not on MacOS],
zip takes the list of input files from standard input instead
of from the command line. For example,
zip -@ foo
will store the files listed one per line on stdin in foo.zip.
Under Unix, this option can be used to powerful effect
in conjunction with the find (1) command.
For example, to archive all the C source files in the current directory
and its subdirectories:
find . -name "*.[ch]" -print | zip source -@
(note that the pattern must be quoted to keep the shell from expanding it).