我在 .txt 文件中列出了很多文件名,to_be_archived_files.txt
其内容如下:
~/Documents/dir1/a.html
~/Documents/dir1/b.html
~/Documents/dir1/c/1.html
Run Code Online (Sandbox Code Playgroud)
如何将它们全部添加到archive.tar.gz
by tar 中?
我想要这样的东西:
tar czf archive.tar.gz -FROM-FILELIST=to_be_archived_files.zip
我怎样才能做到这一点?
Mic*_*alH 10
使用-T
选项:
-T, --files-from FILE
get names to extract or create from FILE
Run Code Online (Sandbox Code Playgroud)
请注意,它不能用~
作主目录的别名,您需要明确指定文件夹。
您需要~
先将其替换为您的主目录。假设您的主目录不包含:
(它们通常不包含,否则无法在 中引用/etc/passwd
):
(cd / &&
sed "s:^~:$HOME:" | pax -w | gzip) < file.list > file.tar.gz
Run Code Online (Sandbox Code Playgroud)
或者,如果您tar
来自 GNU 或bsdtar
:
(cd / &&
sed "s:^~:$HOME:" | tar -T - -zcf -) < file.list > file.tar.gz
Run Code Online (Sandbox Code Playgroud)
其他一些tar
有-I
而不是-T
为了那个。为此star
使用一个list=-
参数 ( star cvf - list=-
)。
请注意,在上述解决方案中,除了star
,如果该列表中的任何文件是directory类型,则包含这些目录的全部内容。
要仅存档目录而不是其内容,请pax
添加-d
选项,使用 GNUtar
或bsdtar
那个--no-recursion
(也-n
使用bsdtar
)。
使用star
, 要包含目录的内容,请添加-dodesc
选项。
归档时间: |
|
查看次数: |
1403 次 |
最近记录: |