2013-01-10 72 views
2

我是unix的新手,正在練習一個簡單的腳本來解壓縮指定目錄中的文件。我需要該程序將壓縮文件解壓縮後將其移動到另一個文件夾中(我將其稱爲此舊文件夾)。爲了簡單起見,我已經刪除了部分代碼解壓縮文件,並且當前程序正在爲特定文件工作,而不是* tar.7z文件擴展。出於某種原因,mv聲明不起作用。當我嘗試運行腳本時,Unix正在說以下內容。有人能幫我一把嗎?再次,我知道這是做事的很長的路,但我想要練習寫一個腳本。請好的,因爲我很熟悉Unix :(shell「if」語句

unzip5:第14行:[ASDE0002.tar.7z]:找不到

#!~/bin/bash 
# My program to try to unzip several files with ending of tar.7z 
# I have inserted the ability to enter the directory where you want this to be done 

echo "What file location is required for unzipping?" 

read dirloc 

cd $dirloc 
mkdir oldzippedfiles 
for directory in $dirloc 
     do 
       if 
       [ASDE0002.tar.7z] 
       then 
       mv -f ASDE0002.tar.7z $dirloc/oldzippedfiles 
     fi 
     done 

echo "unzipping of file is complete" 

exit 0 
+1

你可能是指'[-e ASDE0002.tar.7z]'。 (提示'man test'可以給你'test'的選項,這個IIRC被嵌入在bash中作爲'[]')。除非你在'〜/ bin /'中手動安裝了'bash',否則腳本的開頭看起來有點怪怪'#!〜/ bin/bash'。 – nvlass

+0

非常感謝!這很好用! –

回答

4

[命令的(有時內置名in)命令,它接受參數,因此您需要在調用任何其他程序時放置一個空格,並且還需要測試,例如,要確定文件是否存在並且是文件,您需要使用-f

if [ -f ASDE0002.tar.7z ] 
then 
    mv -f ASDE0002.tar.7z $dirloc/oldzippedfiles 
fi 

這是一些other possible tests

+0

+1我的'-e'不檢查文件是否是普通文件。 – nvlass

+0

我通常使用'[-r somefile]'來確保我可以讀取文件。 ('-r'是文件檢查是否可讀) – BenjiWiebe