谁有办法简化这行命令

谁有办法简化这行命令

cd a;find . -name '*.txt' | tar cvf - -T - | (cd ../b; tar xf -)

即将a目录下的*.txt到b目录(保持原来a的目录结构)
当然,最好是不用tar来tar去了
cp命令好像不照了
注:包括a子目录的*.txt
你好多错字,我看来看去不敢确定你的意思,请改一下,,

我看,建立一个文件auto,内容类似:
#/bin/bush/
cd /usr/a
find.....

......

把你想用的命令按以上格式写好,保存。
然后chmod +x auto
然后再执行,大概是这样,
反正意思跟DOS下的批处理文件差不多。。。不尽之处,请多包涵。
[quote:79ac216de8="双喜"]你好多错字,我看来看去不敢确定你的意思,请改一下,,

我看,建立一个文件auto,内容类似:
#/bin/bush/
cd /usr/a
find.....

......

把你想用的命令按以上格式写好,保存。
然后chmod +x auto
然后再执行,大概是这样,
反正意思跟DOS下的批处理文件差不多。。。不尽之处,请多包涵。[/quote]

sorry,我的意思是写个命令,相当于dos下的
copy a\*.txt b\. -s
我写的命令(转自中国科大BBS)确实达到了这个目的,利用了tar的技巧,但费解压缩的时间

BTW:命令行可能可读性不好,但肯定没有错,我试过的
你先说说你写这个脚本的目的就行了,我看看试着谢谢,如何?:)
我直接说吧,有一台服务器上有很多电影,目录分类很详细的说,我只想拷其中的电影介绍(*.txt)
Dos下的copy a\*.txt b\. /s可以达到这个目的
但linux的cp似乎没有这个功能
楼上那个命令行是科大一位网友想出来的,目的达到了,但效率......呵呵

谢谢版主关照 ^___^
#!/bin/sh
find ./ -name "*.txt" -print>1.sh
while read line
do
cp -fr $line ~/b
done <1.sh
rm -fr 1.sh
用这个脚本试一下如何?
我记得还有个命令,更快速的,待我想想啊!
[quote:d6013f05c6="bixuan"]#!/bin/sh
find ./ -name "*.txt" -print>1.sh
while read line
do
cp -fr $line ~/b
done <1.sh
rm -fr 1.sh
用这个脚本试一下如何?
我记得还有个命令,更快速的,待我想想啊![/quote]

刚诗了一把,没有保持目录结构,*.txt全都跑道b目录下了
:-(
主要是cp那个 -r 参数好像只对目录对象有效!
本身就是把*.txt文件copy到b目录啊
[quote:066e899c5d="bixuan"]本身就是把*.txt文件copy到b目录啊[/quote]

哦,对不起,我没把问题说明白
比如
a/dir1/1.txt
我希望它拷到b/dir1/1.txt,而不是b/1.txt
抱歉,让您误会了!