Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 重命名循环的Shell脚本中的文件_Bash_Macos_Shell_File_Renaming - Fatal编程技术网

Bash 重命名循环的Shell脚本中的文件

Bash 重命名循环的Shell脚本中的文件,bash,macos,shell,file,renaming,Bash,Macos,Shell,File,Renaming,我运行OS X并拥有多张照片,开始将它们命名为xyz-100.jpg,xyz-101.jpg,xyz-102.jpg,直到xyz-402.jpg,现在我想通过基本上减少99张来重命名它们,使其xyz-1.jpg,xyz-2.jpg达到xyz-303.jpg 我知道我可以使用mv命令,但我似乎无法在文件名中实现变量,例如xyz-$reduced.jpg。我怎样才能正确地做到这一点呢?像这样的方法应该可以奏效。但我不确定你是如何获得文件数量的。您还可以对列出文件名的另一个文件的输出进行cat,其效果

我运行OS X并拥有多张照片,开始将它们命名为
xyz-100.jpg
xyz-101.jpg
xyz-102.jpg
,直到
xyz-402.jpg
,现在我想通过基本上减少99张来重命名它们,使其
xyz-1.jpg
xyz-2.jpg
达到
xyz-303.jpg


我知道我可以使用
mv
命令,但我似乎无法在文件名中实现变量,例如
xyz-$reduced.jpg
。我怎样才能正确地做到这一点呢?

像这样的方法应该可以奏效。但我不确定你是如何获得文件数量的。您还可以对列出文件名的另一个文件的输出进行cat,其效果与此相同。但这应该让你开始

num_数组=(123445)
对于“${!num_数组[@]}”中的i;做
mv-i./“myfile${i}.jpg”/somehwere\u
完成

像这样的东西应该可以用。但我不确定你是如何获得文件数量的。您还可以对列出文件名的另一个文件的输出进行cat,其效果与此相同。但这应该让你开始

num_数组=(123445)
对于“${!num_数组[@]}”中的i;做
mv-i./“myfile${i}.jpg”/somehwere\u
完成

我强烈建议您将它们移动到另一个目录,否则,如果中途发生了不好的事情,您将面临混乱的风险。因此,请尝试:

mkdir tmp
for ((n=100; n<=402; n++)); do 
  ln xyz-$n.jpg tmp/xyz-$((n-99)).jpg
done
mkdir-tmp

对于((n=100;n我强烈建议您将它们移动到另一个目录,否则,如果中途发生了不好的事情,您将面临混淆的风险。因此,请尝试:

mkdir tmp
for ((n=100; n<=402; n++)); do 
  ln xyz-$n.jpg tmp/xyz-$((n-99)).jpg
done
mkdir-tmp

对于((n=100;nTry xyz-${reduced}.jpg),这将帮助变量展开知道要展开什么和不要展开什么。请尝试xyz-${reduced}.jpg这将有助于变量扩展知道要扩展什么和不要扩展什么。对于这样的批量移动,应始终使用
mv-i
;否则,如果存在命名冲突,一个文件可能会以静默方式不可逆地覆盖另一个文件。对于这样的批量移动,应始终使用
mv-i
;否则,如果存在命名冲突,请打开e文件可以无声地、不可逆地覆盖另一个文件。@mklement0在编辑中问道:“为什么不使用seq?”OP提到他正在使用OSX(尽管我认为营销人员已经回到了调用MacOS!)所以我认为
jot
更合适。不幸的是,我相当肯定
jot
seq
都不是标准化的,但是任何循环方法都可以。可能更好的方法是
for((n=100;n
for((n=100;n@mklement0在编辑“为什么不使用seq?”中,OP问到他正在使用OSX(虽然我认为营销人员已经回到MacOS中来了!)所以我认为
jot
更合适。不幸的是,我相当确定
jot
seq
都不是标准化的,但是任何循环的方法都可以。对于((n=100;n
for((n=100;n
)可能更好