[问题]新手求一个TAR的脚本,新新的新手,以前没接触过linux,请写详细一些,麻烦了.

sh/bash/dash/ksh/zsh等Shell脚本
回复
zmdzmy
帖子: 2
注册时间: 2008-07-02 16:31

[问题]新手求一个TAR的脚本,新新的新手,以前没接触过linux,请写详细一些,麻烦了.

#1

帖子 zmdzmy » 2008-07-02 16:36

我想用TAR压缩指定目录下的多个文件,但每个文件单独生成一个独立的TAR文件.
比如我在当前用户名的主文件夹内,建立一个名为123的文件夹,向该文件里放1000个任意文件,如何在该文件夹下执行上面上面说的那个任务呢?
因为对脚本完全不了解,所以万分感谢请写详细一些吧.
ii_hw
帖子: 5
注册时间: 2007-12-05 10:16

#2

帖子 ii_hw » 2008-07-02 16:45

我也是个新生 初学脚本编程
我的思路是:做一个Touch 1000个文件并放入那个123文件夹 然后tar这个文件夹
不知道会不会很幼稚 :D
期待高手出来解决
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#3

帖子 solcomo » 2008-07-02 17:59

for i in *; do tar zcvf "$i.tar.gz" "$i";done
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
zmdzmy
帖子: 2
注册时间: 2008-07-02 16:31

#4

帖子 zmdzmy » 2008-07-03 16:00

这个不行吧,我试了试,把当前文件夹打成了一个大包然后直接输出了.
要把文件夹内的所有小文件打包成独立的包~~~
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#5

帖子 solcomo » 2008-07-03 16:06

for i in 123/*; do tar zcvf "$i.tar.gz" "$i";done
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#6

帖子 bones7456 » 2008-07-03 16:07

要先cd进去的
关注我的blog: ε==3
liujiannan1986
帖子: 1
注册时间: 2007-06-10 17:41

#7

帖子 liujiannan1986 » 2008-07-03 21:23

先进入你要打包的文件目录,然后
for i in *;do tar cvf "$i.tar" "$i";[ -f 123.tar ] && tar rvf 123.tar "$i.tar";[ ! -f 123.tar ] && tar cvf 123.tar "$i.tar";rm -f "$i.tar";done
头像
patrickhe
帖子: 681
注册时间: 2005-07-21 19:13
来自: Peking, China
联系:

#8

帖子 patrickhe » 2008-07-08 16:32

用 find 命令即可

代码: 全选

find ~/123/ -exec tar cf {}.tar {} \;
头像
TONO
帖子: 211
注册时间: 2007-06-27 19:53

#9

帖子 TONO » 2008-07-08 17:28

:arrow:
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#10

帖子 eexpress » 2008-07-08 19:24

patrickhe 写了:用 find 命令即可

代码: 全选

find ~/123/ -exec tar cf {}.tar {} \;
怎么不用 {}+的啊。
● 鸣学
头像
patrickhe
帖子: 681
注册时间: 2005-07-21 19:13
来自: Peking, China
联系:

#11

帖子 patrickhe » 2008-07-09 12:53

eexpress 写了:
patrickhe 写了:用 find 命令即可

代码: 全选

find ~/123/ -exec tar cf {}.tar {} \;
怎么不用 {}+的啊。
-exec command {} +
This variant of the -exec option runs the specified command on the selected files, but the command line is built by appending each selected file name at the
end; the total number of invocations of the command will be much less than the number of matched files. The command line is built in much the same way that
xargs builds its command lines. Only one instance of '{}' is allowed within the command. The command is executed in the starting directory.
magiciany
帖子: 393
注册时间: 2007-04-25 11:49

#12

帖子 magiciany » 2008-07-11 13:50

代码: 全选

#!/bin/bash
cd $1
for i in *; do tar zcvf "$i.tar.gz" "$i";done
cd ..
回复