2013-03-18 65 views
0

我正在尝试编写一个脚本,将文件从一个目录复制到另一个目录并向它们添加.bak扩展名。我很难弄清楚如何添加扩展名。UNIX C Shell脚本。复制文件和添加扩展名

foreach file in ($argv[1]/*) 
    cp $file $argv[2] 
end 
+0

C shell脚本的第一条规则是'使用不同的shell - 'bash'或'ksh'或简单的'sh''。 – 2013-03-19 00:02:12

回答

1

制作一堆假设(主要是脚本的轮廓是有效的C shell语法的,而且空间在文件名不是一个问题),那么你可能需要使用basename命令:

foreach file in ($argv[1]/*) 
    cp $file $argv[2]/`basename $file`.bak 
end 

basename命令删除路径名,所以这些文件将被警察正好对应于由$argv[2]命名的目录。如果你也想保留目录层次结构,你必须努力工作。

+0

谢谢!它现在完美。 – user2125899 2013-03-19 00:11:38

0

$ 1和$ 2的参数(目录)的脚本 - :

for f in $1/* 
do 
    fname=$(basename $f) 
    cp $f $2/$fname.bak 
done 
+0

不幸的是,似乎并没有工作。 echo $ f - >目录/文件名。所以当我尝试输入时会导致错误。 – user2125899 2013-03-18 23:59:16

+0

你使用绝对或相对路径为1美元和2美元? – suspectus 2013-03-18 23:59:59

+0

相对路径。问题在于$ f变量不仅包含文件名,还包含相对目录。 – user2125899 2013-03-19 00:02:04