我有312个目录,
Ion_0001- Ion_0312.
在每个目录中,我都有一个文件light.out。我想将每个目录中的文件名更改为,例如:
Ion_0001.out
我相信我还需要替换/,以便我的输出DOESNT看起来像这样:
Ion_0001/.out
任何人都可以用一个简单的脚本来帮助我吗?
这是我尝试过的:
#!/bin/bash
for dir in */
do
cd $dir
for filename in *.out; do
mv $filename ${filename//$dir.out}
done
cd ..
done
谢谢!
答案 0 :(得分:2)
不是免费的编码服务,但它很简单,不值得争论......
假设这个文件结构:
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
...
那是你在找什么?
答案 1 :(得分:2)
for dir in Ion*/; do
mv "${dir}light.out" "${dir}${dir%/}.out"
done
Ion*/
模式中的尾部斜杠仅将结果限制为目录,但斜杠将出现在变量的值中。