查找文件,创建子目录并移动

杰斯

我有跟随的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章