use*_*905 9 linux bash if-statement
我一直在谷歌搜索,试图找到一种方法来创建一个创建目录结构的脚本.看起来像这样:
/ shared shared/projects shared/series shared/movies shared/movies/action
你明白了.
脚本从中读取的文件如下所示:
shared backup shared data shared projects shared projcets series shared projects movies shared projects movies action
我想创建一个脚本来读取文件中的每一行并为每一行运行以下内容:如果目录存在,它将自己放在目录中并从那里创建结构,如果该目录不存在,则创建它.
当行中的所有条目都在前面时,返回原始目录并阅读下一行.
我的系统是Ubuntu 10.10.
到目前为止,我已经做到了这一点,但它不起作用.
#!/bin/bash
pwd=$(pwd)
for structure in ${column[*]}
do
if [ $structure ]
then
cd $structure
else
mkdir $structure
fi
done
cd $pwd
Run Code Online (Sandbox Code Playgroud)
lit*_*adv 26
您可以使用它mkdir -p shared/projects/movies/action
来创建整个树:它将创建shared
,然后shared/projects
,然后shared/projects/movies
,然后,和shared/projects/movies/action
.
所以基本上你需要运行脚本mkdir -p $dir
哪里$dir
是你的目录树的叶子目录.
如果struct.txt
包含您提到的目录结构,那么只需运行:
sed '/^$/d;s/ /\//g' struct.txt | xargs mkdir -p
Run Code Online (Sandbox Code Playgroud)
sed
将删除空行并使其余行看起来像目录路径.
xargs
将获取每一行并将其作为参数传递给mkdir
.
mkdir
将使目录和-p
标志将创建任何父目录,如果需要.
归档时间: |
|
查看次数: |
23792 次 |
最近记录: |