ドットで始まるファイルを含む、フォルダ内のすべてのファイルとサブディレクトリを圧縮する必要があります。

ドットで始まるファイルを含む、フォルダ内のすべてのファイルとサブディレクトリを圧縮する必要があります。

.(ドット)で始まるファイルを含む、フォルダ内のすべてのファイルとサブディレクトリを圧縮する必要があります。

私はというフォルダにあり、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)Ddotglobzip -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). 

関連情報