我正在尝试创建一个脚本,在运行解压缩后将CD刻录到文件中。我已经为.tar文件完成了这个,但是却无法提供zip的正则表达式。这是我用强制覆盖解压缩的命令。
unzip -o my_file.zip
Archive: my_file.zip
inflating: my_file/load.file
inflating: my_file/eccn.txt
inflating: my_file/my_file.tgz
以下是我尝试使用sed
unzip -o my_file.zip | sed "s|/.*$||"
Archive: my_file.zip
inflating: my_file
inflating: my_file
inflating: my_file
以下是我处理.tar文件的方法:
tar -xvzf $fname #tar it
topDir=$(tar -xvzf $fname | sed "s|/.*$||" | uniq) #tars it verbosely and pipes it to uniq
[ $(wc -w <<< $topDir) == 1 ] || exit 1 #check to see there is one entry in $topDir
cd $topDir #cd into $topDir
echo your current dir is $PWD
tar -xvzf my_file.tgz | sed "s|/.*$||"
my_file
my_file
my_file
my_file
my_file
我的问题是如何摆脱my_file之前的所有事情(例如infalting :)然后我可以cd到提取的文件中?
答案 0 :(得分:1)
如果要做的只是将文件解压缩到cd
文件夹,请执行以下操作:
unzip my_file.zip; cd my_file
还值得注意的是,zip文件可能在根级别包含多个文件或目录。因此,在一般情况下,cd
到目前为止只有一个目录。事实上,根本就没有,它仍然是一个完全有效的zip文件。
如果您确定您正在使用的每个zip文件都有1个目录,并且您希望在代码中动态发现该目录的名称,则以下命令应该将该目录转换为变量,所以你可以cd
进入它:
DIR=$(zipinfo -1 my_file.zip | grep -oE '^[^/]+' | uniq)
unzip my_file.zip
cd $DIR