Как использовать 7z для архивации всех файлов и каталогов (включая скрытые) в каталоге?

Следующие команды сокращают первый 31 байт из $file (использование $file~ как временный файл. копия):

dd if="$file" of="$file~" bs=1 skip=31
mv "$file~" "$file"

Только необходимо перечислить или find все файлы под /foo/ и выполните два выше для каждого $file найденный.

8
03.11.2011, 02:16
2 ответа

Если Вы хотите содержание единственного каталога, легкий метод должен измениться на него сначала:

cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .

То, что Вы видели, является этим * расширяется до списка названий файлов, которые не начинаются с a .. Это - зарегистрированное поведение, и это - главная причина, почему файлы, имя которых начинается с a . как говорят, скрыты (другой, это ls не показывает им по умолчанию).

Нет никакого действительно удобного портативного способа перечислить все файлы в каталоге. Можно использовать

~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*

но если не будет никакого файла, соответствующего одному из шаблонов затем, то шаблон останется нерасширенным. В ударе можно установить dotglob опция постараться не рассматривать продвижение . особенно (. и .. все еще исключены из соответствий):

shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*

В ksh, или в ударе, если Вы устанавливаете extglob опция (или в zsh, если Вы устанавливаете ksh_glob опция), можно записать шаблон, который соответствует всем файлам кроме . и ..:

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)
7
27.01.2020, 20:09

Нет, * как предполагается, не возвращает все файлы. Это возвращает только видимые.

Более легкое решение:

cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
3
27.01.2020, 20:09

Теги

Похожие вопросы