简单 Bash 脚本:更改文件名以模拟目录

Simple Bash Script: Change names of files to mimic directories

我标记了 312 个目录,

Ion_0001- Ion_0312. 

在每个目录中我都有一个文件light.out。我想将每个目录中的文件名更改为,例如:

Ion_0001.out

我相信我还需要替换 / 以便我的输出看起来像这样:

Ion_0001/.out

谁能帮我写一个简单的脚本??

这是我试过的:

#!/bin/bash
for dir in  */
do
cd $dir

for filename in *.out; do
mv $filename ${filename//$dir.out}
done
cd ..
done

谢谢!

不是免费的编码服务,但它足够简单,不值得争论...

假设这个文件结构:

Ion_0001/
Ion_0001/light.out
Ion_0002/
Ion_0002/light.out
...

运行 此代码在脚本中或仅在命令行中:

for i in Ion_0*
do
    mv "${i}/light.out" "${i}/${i}.out"
done

导致此结构:

Ion_0001/
Ion_0001/Ion_0001.out
Ion_0002/
Ion_0002/Ion_0002.out
...

这就是你要找的吗?

for dir in Ion*/; do 
    mv "${dir}light.out" "${dir}${dir%/}.out"
done

Ion*/ 模式中的尾部斜杠将结果仅限于目录,但斜杠将出现在变量的值中。