2011-10-07 73 views
1

我是使用數據集的記者。每次我收到一個新的數據集時,我都會立即做兩件事:複製文件並鎖定原件。Shell腳本複製目錄,鎖定一個,並移動到新的目錄 - 幾乎在那裏?

我想讓這個過程自動化。通過改變a shell script I use to create nested folders for reporting projects並將它與一堆命令串起來,我能夠實現基本功能,但它很混亂。我將非常感謝您在精簡方面的幫助。

這裏就是我現在正在做的(承擔與我和我保證會盡可能明確):

我將數據下載到名爲「DataInbox」桌面文件夾中我也有下面的shell腳本,保存爲newdata.sh:

#!/bin/bash 

if [[ -z "${1}" ]]; then 
    die "FolderName Required" 
fi 


/bin/mkdir -p ~/Desktop/DataFarm/$1/{ProtectedOrig,Data} 

echo -n "---Data Folder Setup 

---Data Introduction 

---Data Audit/Manipulation 

---Data Queries" > ~/Desktop/DataFarm/$1/Data/DataJournal.txt 

通過執行bash newdata.sh DirectoryName我創建子文件夾「數據」和「ProtectedOrig」一個目錄,名爲「DataJournal.txt」建在四個標題的文本文件

在「DataInbox」導演裏面Ÿ我跑這個爛攤子,只有&&串成:

$ ditto NewData/ NewDataCopy 

$ bash newdata.sh DirectoryName 

$ mv NewData/ /Users/JSG/Desktop/DataFarm/DirectoryName/ProtectedOrig/NewData 

$ mv NewDataCopy/ /Users/JSG/Desktop/DataFarm/DirectoryName/Data/NewDataCopy 

$ chflags -R uchg /Users/JSG/Desktop/DataFarm/DirectoryName/ProtectedOrig/ 

就像我說的,我想簡化此。事實上,我真正想做的事情是把整個事情變成一個shell腳本,而我正在努力使它工作。謝謝你從一個急切的新手提前。

+0

如果你只想確保你有原始副本,你可以研究配置管理工具,比如說git或svn。 – rlduffy

回答

2

不知道我是否誤解了你的問題,但是你想把所有這些合併成一個這樣的腳本?

#!/bin/bash 

if [[ -z "${1}" ]]; then 
    die "FolderName Required" 
fi 

newDirName="DirectoryName" 
newBaseDir="~/Desktop/DataFarm/$1/" 
/bin/mkdir -p $newBaseDir/{ProtectedOrig,Data} 

echo -n "---Data Folder Setup 

---Data Introduction 

---Data Audit/Manipulation 

---Data Queries" > $newBaseDir/Data/DataJournal.txt 

ditto NewData/ NewDataCopy 
newdata.sh $newDirName 
mv NewData/ $newBaseDir/ProtectedOrig/NewData 
mv NewDataCopy/ $newBaseDir/Data/NewDataCopy 
chflags -R uchg $newBaseDir/ProtectedOrig/ 
+0

現在你已經將它作爲newdatatest.sh做一個'chmod + x newdatatest.sh'來使它可執行,然後運行它:'newdatatest.sh'。我使用的是你在帖子中提供的命令,所以有些目錄可能關閉(比如'newdata.sh'?)。 「NewData」和「NewDataCopy」是在哪裏創建的?這些應該是ProtectedOrig和Data? – AlG

+0

這只是一個小小的修復。我做了一個編輯,讓你爲我放在一起,就是這樣!我是新手,所以我提交了編輯進行同行評審。非常非常感謝你。 –

相關問題