【发布时间】:2020-07-17 11:04:06
【问题描述】:
我有这样的文件夹
parent
|-- output
|-- 1.Abby
| |-- s001_clean.log
| |-- s001_clean.idx
| |-- s002_clean.log
| `-- s002_clean.idx
|-- 2.Chris
| |-- s001.ppt
| `-- s002.ppt
|-- 3.Bobby
|-- s001.tar.gz
`-- s002.tar.gz
我想把它们修改成这个
parent
|-- s001
|-- 1.Abby
| |-- s001_clean.log
| `-- s001_clean.idx
|-- 2.Chris
| `-- s001.ppt
|-- 3.Bobby
| `-- s001.tar.gz
|-- s002
|-- 1.Abby
| |-- s002_clean.log
| `-- s002_clean.idx
|-- 2.Chris
| `-- s002.ppt
|-- 3.Bobby
`-- s002.tar.gz
到目前为止,我已经成功创建了 s001/s002 和 Abby/Chris/Bobby 文件夹。
但是,当我尝试将文件移动到里面时,我只得到了 .log 文件来移动到它的目的地。
'''
#!/usr/bin/env bash
aa='1.A'
bb='2.B'
cc='3.C'
for s in output/"$aa"/*_c*; do
sn=${s%%_*}
sn=${sn##*/}
mkdir -p "${sn}"/$aa
mkdir -p "${sn}"/$bb
mkdir -p "${sn}"/$cc
done
'''
我真的不知道从这里怎么走。
如何将文件移动到目标目录?
另外,有没有办法可以使 mkdir 部分更短?
我尝试了几种方法,但没有奏效。
如果有人可以提供帮助,那就太好了。
谢谢
【问题讨论】:
-
mkdir -p "${sn}"/{$aa,$bb,$cc}
-
我试过了。结果是这样的: 2.childB, ||| 3.childC} ||| {1.childA,在 s1 ||| {1.childA,在 s2 中
-
我的回答不需要,但请尝试
echo mkdir s{1,2}/{$aa,$bb,$cc},不要附加引号。 -
我用
mkdir -p output/{1.A,2.B,3.C}; touch output/1.A/s{1,2}_clean.{idx,log};touch output/2.B/s{1,2}.ppt;touch output/3.C/s{1,2}.tar.gz生成了测试数据。将此添加到您的问题中时,您可能会获得额外的“好问题”分数。