我有跟随的Direcory树。
Comb
|
|--- 1.json2
|--- 1.cc.json2.ml
|--- 102.cc.json2.pre2.ml
|--- 1.json2.pre1
|--- 102.json2.pre1
我需要create和bash才能获得此结果。
Comb
|--|
|-1
| |--- 1.json2
| |--- 1.cc.json2.ml
| |--- 1.json2.pre1
|- 102
|--- 102.cc.json2.pre2.ml
|--- 102.json2.pre1
我尝试过这样的操作,但在某些情况下会中断并丢失文件。
for file in *.cc.json2.pre2.ml; do mkdir -- "${file%.cc.json2.pre2.ml}"; mv -- "$file" "${file%.cc.json2.pre2.ml}"; done
for file in *.cc.json2.pre1.ml; do mkdir -- "${file%.cc.json2.pre1.ml}"; mv -- "$file" "${file%.cc.json2.pre1.ml}"; done
以下shellscript应该适用于您在问题中显示的目录树。
#!/bin/bash
for i in *.*
do
if test -e "$i"
then
tmp="${i%%.*}"
mkdir -p "$tmp"
mv -i "$i" "$tmp"
else
echo "No file or directory matching '$i'"
fi
done
“将目录更改”cd
进入目录。
创建shellscript。
给它一个名称,没有任何斑点,例如shellscript
(因为你不希望它本身移动),
使用运行shell脚本
bash shellscript
如果您打算在目录树的顶部创建新文件并再次运行shellscript,则可能希望使其“可执行”,
chmod +x shellscript
然后,您可以“直接”运行它,
./shellscript
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句