2011-10-07 32 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

这只是一个小小的修复。我做了一个编辑,让你为我放在一起,就是这样!我是新手,所以我提交了编辑进行同行评审。非常非常感谢你。 –

相关问题