创建多变量嵌套目录结构 UNIX
create a multi variable nested directory structure UNIX
正在尝试创建嵌套目录结构YEAR/FILE_TYPE
。
所需的目录结构:
~/2016/doc
~/2016/pdf
~/2016/txt
~/2015/doc
~/2015/pdf
~/2015/txt
等...
按 YEAR 变量创建:
set varYear (seq 1996 2016) # fish shell 语法
创建文件类型变量
set varType (doc pdf txt) # fish shell 语法
第一次失败尝试:
运行 echo "mkdir /"$varDate/$varType
第二次失败尝试:
因为我在 $varDate
echo $i "/" $varType
结束 # fish shell 语法
对于如何在 for 循环中将两个变量组合在一起以创建目录结构的一些帮助,我们将不胜感激。
从 fish
shell 中的类似内容开始。
这是bash
:
ftypes=(doc pdf txt)
for year in $(seq 1996 2016)
do
for ftype in ${ftypes[*]}
do
echo "mkdir -p $year/$ftype"
#mkdir -p "$year/$ftype"
done
done
$ set years 2015 2016
$ set subdirs doc pdf txt
$ echo {$years}/{$subdirs}
2015/doc 2016/doc 2015/pdf 2016/pdf 2015/txt 2016/txt
只需将 echo
替换为 mkdir -p
。
见https://fishshell.com/docs/current/index.html#expand-variable
和 https://fishshell.com/docs/current/index.html#expand-brace
Glenn 的回答很好,但实际上并不需要大括号。此外,括号用于子命令(类似于 bash 的 $()
)。所以你的 set varType (doc pdf txt)
中的括号不会做你想做的,除非你打算 运行 一个名为 doc
的命令。试试这个,它依赖于 fish 扩展具有多个值的变量的独特方式:
set varYear (seq 1996 2016)
set varType doc pdf txt
mkdir -p $varYear/$varType
或者使用传统的循环结构:
for varYear in (seq 1996 2016)
for varType in doc pdf txt
mkdir -p $varYear/$varType
end
end
正在尝试创建嵌套目录结构YEAR/FILE_TYPE
。
所需的目录结构:
~/2016/doc
~/2016/pdf
~/2016/txt
~/2015/doc
~/2015/pdf
~/2015/txt
等...
按 YEAR 变量创建: set varYear (seq 1996 2016) # fish shell 语法
创建文件类型变量 set varType (doc pdf txt) # fish shell 语法
第一次失败尝试: 运行 echo "mkdir /"$varDate/$varType
第二次失败尝试: 因为我在 $varDate echo $i "/" $varType 结束 # fish shell 语法
对于如何在 for 循环中将两个变量组合在一起以创建目录结构的一些帮助,我们将不胜感激。
从 fish
shell 中的类似内容开始。
这是bash
:
ftypes=(doc pdf txt)
for year in $(seq 1996 2016)
do
for ftype in ${ftypes[*]}
do
echo "mkdir -p $year/$ftype"
#mkdir -p "$year/$ftype"
done
done
$ set years 2015 2016
$ set subdirs doc pdf txt
$ echo {$years}/{$subdirs}
2015/doc 2016/doc 2015/pdf 2016/pdf 2015/txt 2016/txt
只需将 echo
替换为 mkdir -p
。
见https://fishshell.com/docs/current/index.html#expand-variable
和 https://fishshell.com/docs/current/index.html#expand-brace
Glenn 的回答很好,但实际上并不需要大括号。此外,括号用于子命令(类似于 bash 的 $()
)。所以你的 set varType (doc pdf txt)
中的括号不会做你想做的,除非你打算 运行 一个名为 doc
的命令。试试这个,它依赖于 fish 扩展具有多个值的变量的独特方式:
set varYear (seq 1996 2016)
set varType doc pdf txt
mkdir -p $varYear/$varType
或者使用传统的循环结构:
for varYear in (seq 1996 2016)
for varType in doc pdf txt
mkdir -p $varYear/$varType
end
end