我写了一个主要 为我工作的脚本。但是,最后两个rmdir
命令有时会返回Directory not empty
个错误。我怎么打败这个?我尝试添加r
,然后添加-rf
,返回Illegal option
个错误。
我是新手,我会感激任何帮助。这是完整的shell脚本,它再次主要工作得非常漂亮:
if [[ -z "${1}" ]]; then
die "FolderName Required"
fi
newDirName="DirectoryName"
newBaseDir="/Users/JSG/Desktop/DataFarm/$1/"
/bin/mkdir -p $newBaseDir/{ProtectedOrig,Data}
echo -n "---Data Folder Setup
---Data Introduction
---Data Audit/Manipulation
---Data Queries" > $newBaseDir/Data/$1_DataJournal.txt
ditto NewData/ NewDataCopy
fab deploy_data_to_s3:data=*
mv NewData/ $newBaseDir/ProtectedOrig/NewData
mv NewDataCopy/ $newBaseDir/Data/NewDataCopy
mv $newBaseDir/Data/NewDataCopy/* $newBaseDir/Data/
rmdir $newBaseDir/Data/NewDataCopy
mv $newBaseDir/ProtectedOrig/NewData/* $newBaseDir/ProtectedOrig/
rmdir $newBaseDir/ProtectedOrig/NewData
chflags -R uchg $newBaseDir/ProtectedOrig/
mkdir NewData
我错过了什么?并提前感谢!
答案 0 :(得分:10)
对于rmdir
命令,您需要添加--ignore-fail-on-non-empty
标志,以便删除目录,即使文件在那里也是如此:
rmdir --ignore-fail-on-non-empty $newBaseDir/Data/NewDataCopy
您也可以使用rm -r
:
rm -r $newBaseDir/Data/NewDataCopy
如果目录在UNIX中不为空,则rmdir不会删除该目录。使用rm命令以递归方式删除目录及其所有内容的正确方法。
答案 1 :(得分:1)
检查目录中以.
开头的所有文件。我注意到你正在移动*
,但是如果有一个名为.hello
的文件被调用,则*
将不匹配此文件,因此当该文件目录不会为空时你来做一个rmdir。