我的打击乐不是它应该的样子。我想创建一个小批处理脚本,它将复制目录列表到一个新的zip文件。我能想到的提供文件列表的方法(至少)有两种:1.从一个文件(比如config.txt)中读取。该文件将包含要压缩的目录列表或1.将列表直接硬编码到bash脚本中第一种选择似乎更直接(尽管不那么优雅)。我面临的两个问题是我不确定如何做到以下几点:
有人能用几句话来建议我如何做到这一点吗?顺便说一句,我运行的是Ubuntu 10.0.4
vyswwuz21#
您可以在命令行上创建一个gzip压缩的tar,如下所示:
tar czvf mytar.tar.gz dir1 dir2 .. dirN
如果你想在一个bash脚本中完成这个操作,并将目录作为参数传递给脚本,那么这些参数将以$@结束。
$@
tar czvf mytar.tar.gz "$@"
如果它在脚本中(比如myscript.sh),您可以这样调用它:
myscript.sh
./myscript.sh dir1 dir2 .. dirN
如果你想从一个列表中读取(你的选项1),你可以这样做(如果目录名中有空格,这就不起作用了):
tar czvf mytar.tar.gz $(<config.txt)
kd3sttzy2#
创建两个文件:filelist -放置所有需要的目录(一行一个)并创建一个简单的bash脚本:
#!/bin/bash for DIR in `cat filelist` do if [ -d $DIR ] then echo $DIR fi done
rn0zuynd3#
您可以导出一个变量,例如DIRECTORIES=“DIR 1 DIR 2 DIR 3...”,并且在脚本中需要使用变量tar czvf $DIRECTORIES
vlf7wbxs4#
当你写文件名或目录名到文件时,只要使用空字节作为分隔符。这样你就不用担心文件名中的空格,换行符等!
printf "%s\000" */ > listOfDirs.txt # alternative: find ... -print0 while IFS="" read -r -d '' dir; do command ls -1abd "$dir"; done < listOfDirs.txt tar --null -czvf mytar.tar.gz --files-from listOfDirs.txt
ogsagwnx5#
如果您正在寻找压缩目录,下面的命令可以帮助您。pbzip2使用并行实现压缩目录
tar cf <outputfile_name> --use-compress-prog=pbzip2 <directory_name>
snvhrwxg6#
我经常用途:
tar -cv Folder1 Folder2 | gzip > Folders.tar.gz
6条答案
按热度按时间vyswwuz21#
您可以在命令行上创建一个gzip压缩的tar,如下所示:
如果你想在一个bash脚本中完成这个操作,并将目录作为参数传递给脚本,那么这些参数将以
$@
结束。如果它在脚本中(比如
myscript.sh
),您可以这样调用它:如果你想从一个列表中读取(你的选项1),你可以这样做(如果目录名中有空格,这就不起作用了):
kd3sttzy2#
创建两个文件:filelist -放置所有需要的目录(一行一个)
并创建一个简单的bash脚本:
rn0zuynd3#
您可以导出一个变量,例如DIRECTORIES=“DIR 1 DIR 2 DIR 3...”,并且在脚本中需要使用变量tar czvf $DIRECTORIES
vlf7wbxs4#
当你写文件名或目录名到文件时,只要使用空字节作为分隔符。这样你就不用担心文件名中的空格,换行符等!
ogsagwnx5#
如果您正在寻找压缩目录,下面的命令可以帮助您。
pbzip2使用并行实现压缩目录
snvhrwxg6#
我经常用途: