我正在嘗試編寫一個腳本,將文件從一個目錄複製到另一個目錄並向它們添加.bak擴展名。我很難弄清楚如何添加擴展名。UNIX C Shell腳本。複製文件和添加擴展名
foreach file in ($argv[1]/*)
cp $file $argv[2]
end
我正在嘗試編寫一個腳本,將文件從一個目錄複製到另一個目錄並向它們添加.bak擴展名。我很難弄清楚如何添加擴展名。UNIX C Shell腳本。複製文件和添加擴展名
foreach file in ($argv[1]/*)
cp $file $argv[2]
end
製作一堆假設(主要是腳本的輪廓是有效的C shell語法的,而且空間在文件名不是一個問題),那麼你可能需要使用basename
命令:
foreach file in ($argv[1]/*)
cp $file $argv[2]/`basename $file`.bak
end
的basename
命令刪除路徑名,所以這些文件將被警察正好對應於由$argv[2]
命名的目錄。如果你也想保留目錄層次結構,你必須努力工作。
謝謝!它現在完美。 – user2125899 2013-03-19 00:11:38
$ 1和$ 2的參數(目錄)的腳本 - :
for f in $1/*
do
fname=$(basename $f)
cp $f $2/$fname.bak
done
不幸的是,似乎並沒有工作。 echo $ f - >目錄/文件名。所以當我嘗試輸入時會導致錯誤。 – user2125899 2013-03-18 23:59:16
你使用絕對或相對路徑爲1美元和2美元? – suspectus 2013-03-18 23:59:59
相對路徑。問題在於$ f變量不僅包含文件名,還包含相對目錄。 – user2125899 2013-03-19 00:02:04
C shell腳本的第一條規則是'使用不同的shell - 'bash'或'ksh'或簡單的'sh''。 – 2013-03-19 00:02:12