简单 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*/
模式中的尾部斜杠将结果仅限于目录,但斜杠将出现在变量的值中。
我标记了 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*/
模式中的尾部斜杠将结果仅限于目录,但斜杠将出现在变量的值中。