我正在尝试想出一个 shell 脚本来重命名文件,并在每次文件名更改时 运行 一个命令
I'm trying to come up with a shell script to rename a file and run a command each time the filename changes
如何使下面的 shell 脚本更改 .txt 文件名并在每次名称更改后执行 golang 脚本,将新的 .txt 文件作为参数。
注意:我的 txt 文件在不同的目录中,因此路径和它们不能在同一目录中。
我想为每个新的 txt 文件执行 50 次,每次文件名都从 t1 更改为 t50,而不必复制 50 个 txt 文件。
cd /home/rundeck; mv a.txt a1.txt; cd /home/jenkins/script; ./test.go /home/rundeck/a1.txt
cd /home/rundeck; mv a1.txt a2.txt; cd /home/jenkins/script; ./test.go /home/rundeck/a2.txt
cd /home/rundeck; mv a2.txt a3.txt; cd /home/jenkins/script; ./test.go /home/rundeck/a3.txt
你的意思是这样的?
#!/bin/bash
d=/home/rundeck
cd /home/jenkins/script
src="a.txt"
for ((i=1; i<=50; ++i)); do
dst="a$i.txt"
mv "$d/$src" "$d/$dst"
./test.go "$d/$dst"
src=$dst
done
mv "$d/$dst" "$d"/a.txt
也许在每次迭代中复制 a.txt
而不是连续重命名它是有意义的,然后在完成后删除最后一个文件;这使得脚本更能抵抗中断。
如何使下面的 shell 脚本更改 .txt 文件名并在每次名称更改后执行 golang 脚本,将新的 .txt 文件作为参数。
注意:我的 txt 文件在不同的目录中,因此路径和它们不能在同一目录中。
我想为每个新的 txt 文件执行 50 次,每次文件名都从 t1 更改为 t50,而不必复制 50 个 txt 文件。
cd /home/rundeck; mv a.txt a1.txt; cd /home/jenkins/script; ./test.go /home/rundeck/a1.txt
cd /home/rundeck; mv a1.txt a2.txt; cd /home/jenkins/script; ./test.go /home/rundeck/a2.txt
cd /home/rundeck; mv a2.txt a3.txt; cd /home/jenkins/script; ./test.go /home/rundeck/a3.txt
你的意思是这样的?
#!/bin/bash
d=/home/rundeck
cd /home/jenkins/script
src="a.txt"
for ((i=1; i<=50; ++i)); do
dst="a$i.txt"
mv "$d/$src" "$d/$dst"
./test.go "$d/$dst"
src=$dst
done
mv "$d/$dst" "$d"/a.txt
也许在每次迭代中复制 a.txt
而不是连续重命名它是有意义的,然后在完成后删除最后一个文件;这使得脚本更能抵抗中断。