Bash 如何仅提取文件而不提取目录继承权
如何仅提取文件而不提取目录继承权。 假设我有一个myarchive.tgz文件,其中有许多目录,每个目录中都有它们的文件Bash 如何仅提取文件而不提取目录继承权,bash,shell,unix,Bash,Shell,Unix,如何仅提取文件而不提取目录继承权。 假设我有一个myarchive.tgz文件,其中有许多目录,每个目录中都有它们的文件 eg.myarchive.tgz/folder1/file1.txt /folder2/folder2.1/file2.txt 现在,每当我提取它时,它就会以相同的继承权进入目录,它就在存档中。 我想抽像 myarchive/file1.txt /file2.txt 像这样。 怎么做?请
eg.myarchive.tgz/folder1/file1.txt
/folder2/folder2.1/file2.txt
现在,每当我提取它时,它就会以相同的继承权进入目录,它就在存档中。
我想抽像
myarchive/file1.txt
/file2.txt
像这样。
怎么做?请帮忙 您可以将tarball解包到一个临时文件夹:
rm -rf /tmp/foo && mkdir /tmp/foo # make sure the folder exists and is empty
tar xf foo.tgz -C /tmp/foo
然后将文件复制到最终位置:
rm -rf unpacked && mkdir unpacked # make sure the folder exists and is empty
find /tmp/foo -type f -exec cp -v {} unpacked \;
注意:
tar-C
特定于GNU tar。如果您的tar不理解-C
,请使用:
cd /tmp/foo
tar xf foo.tgz
查找:“-exec”缺少参数对不起,我的错。添加了必要的
\代码>最好使用“+”:查找-键入f-exec cp-v{}unpacket+
oh,并使用mktemp-d
来“确保文件夹存在且为空”创建高度依赖于平台的临时文件和文件夹,例如,posix没有指定mktemp。与+
相同,而不是代码>。因此,优化工作留给OP来完成