Shell脚本重复目录,锁定一个,并将两者都移动到新目录 - 几乎在那里?

时间:2011-10-07 18:56:39

标签: bash shell command-line

我是一名处理数据集的记者。每次收到新数据集时,我都会立即做两件事:复制文件并锁定原件。

我想自动化这个过程。通过改变a shell script I use to create nested folders for reporting projects并将其与一串命令串在一起,我能够实现基本功能,但它很混乱。我很感激你的精简帮助。

这就是我现在正在做的事情(忍受我,我保证尽可能清楚):

我将数据下载到名为“DataInbox”的Desktop文件夹中,其中我还有以下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,我创建了一个包含子文件夹“Data”和“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脚本,而我正在努力使它成功。提前感谢一位热切的新手。

1 个答案:

答案 0 :(得分: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/