2013-03-18 90 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