我是一名处理数据集的记者。每次收到新数据集时,我都会立即做两件事:复制文件并锁定原件。
我想自动化这个过程。通过改变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脚本,而我正在努力使它成功。提前感谢一位热切的新手。
答案 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/