我有一堆目录需要恢复,但他们必须首先打包到一个.tar。有没有一个脚本可以让我将所有100多个目录打包到他们自己的tar目录中,使目录变成dir.tar。为每个目录创建一个tar文件
迄今为止尝试:
for i in *; do tar czf $i.tar $i; done
我有一堆目录需要恢复,但他们必须首先打包到一个.tar。有没有一个脚本可以让我将所有100多个目录打包到他们自己的tar目录中,使目录变成dir.tar。为每个目录创建一个tar文件
迄今为止尝试:
for i in *; do tar czf $i.tar $i; done
,你写的,如果你有一个目录名的一些空间,将无法工作,因为名字将被分割,并且如果它们存在于将tar文件的脚本这个级别。
您可以使用此命令可以列出目录,不递归:
find . -type d -maxdepth 1 -mindepth 1
,这一个对每个人进行焦油
find . -type d -maxdepth 1 -mindepth 1 -exec tar cvf {}.tar {} \;
加入''删除存档后的原始目录:'find。 -maxdepth 1 -mindepth 1 -type d -exec tar cvf {} .tar {} --remove-files \;' – 2016-07-13 18:30:40
compress'find。 -type d -maxdepth 1 -mindepth 1 -exec tar zcvf {} .tar.gz {} \;' – 2016-11-30 19:28:18
,你有带空格的任何目录名在那个级别?如果没有,你的脚本将工作得很好。
我最常做的是写一个脚本我想执行呼应了命令:
$ for i in *
do
echo tar czf $i.tar $i
done
然后你可以看一下输出,看看它做你想要什么。在确定该程序可行后,编辑命令行并删除echo
命令。
如果目录的数量是非常大的,他们的名字都太长
的语句号执行一个
for i in *
do
echo tar czf $i.tar $i
done
你会得到错误“字符串太长”
如果有后目录名称中的空格,然后只需将变量放在双引号内:
for i in *
do
tar czf "$i.tar" "$i"
done
如果有一种明确列出它们的方法...是的。 – tink 2013-04-10 20:45:35
如果这有助于实现这一目标,他们将独自在他们自己的目录中。 – 2013-04-10 20:48:22
可能意味着要告诉你的是,SO不是“为我写剧本”网站。你试过什么了? – 2013-04-10 20:53:20