2017-05-24 153 views
1

我有一个非常简单的重命名脚本,我在OSX终端中运行。它看起来像这样:bash之间插入延迟

mv -nv /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1140122_alternate1.tif /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1140122_alternate1A.tif 

我通常有几百行代码的重命名这样一个为所有我可以重命名文件。

但是我认为工作中的网络安全与代码混淆,因为它会随机插入文件名。我认为这是中断代码,代码非常简单,我想不出为什么不起作用的另一个原因。

我想尝试在每行之间添加1秒的延迟,但是如何?我读过类似睡眠1s可能工作,但我必须在每一行之间添加?如果是这样的话,那将是一件令人头疼的事情。如果是,有没有其他办法?

更新:我有一个延迟工作,但仍然遇到像以前一样的问题。这是终端返回的内容:

mv -nv /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1247136_alternate1.tif /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1247136_alternate1A.tif 
mv -nv /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1247136_alternate2.tif /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1247136_alternate2A.tif 
mv -nv /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1247136_alternate3.tif /Volumes/COMMON-LIC-PHOTO/DATA/James/Remv -nvest/1247136_alternate3A.tif 
mv -nv /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1247136_alternate4.tif /Volumes/COMMON-LIC-PHOTO/DATA/James/Remv -nTest/1247136_alternate4A.tif 
mv -nv /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1247136_lifestyle.tif /Volumes/COMMON-LIC-PHOTO/DATA/James/Renmv -nv /Volume36_lifestyleA.tif 
mv -nv /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1247136_standard.tif /Volumes/COMMON-LIC-PHOTO/DATA/James/Rename_Test/1247136_standardA.tifç^C^C^C^C^C 

它在抛弃重命名部分中的各种垃圾。它与文件名和目录名称混淆,我找不到原因。

+0

有,会为你自动重命名文件,如果你能说的规则是什么,有什么需要改变....即所有字母必须大写,所有的下划线必须拆除工具 –

+0

我。 d打赌“顶起来的”条目的名字中有空格你需要引用那些像'mv/path/2/file“/ path w spaces/2/file”'。祝你好运。 – shellter

回答

0

以下脚本只读取你的命令的文件,并在每个命令后插入一个睡眠

while read curr_line; do 

    echo curr_line $curr_line 

    return_msg=$($curr_line ) # execute cmd 

    # may want to do error checking on value of error variable $? and return_msg 

    sleep 1 

done < ./input_file_of_original_cmds.txt # read in that file 
+0

这不是返回码,但无论命令转储到标准输出。返回码在$?中。 – Jack

0

如果你是刨去执行所有这些mv命令,从终端就可以使一个bash别名:

alias mvd='sleep 2s && mv' 

就脚本而言,由于脚本不能理解bash别名(至少很容易),因此可以在脚本的开始处构建一个类似的函数:

function mvd { sleep 2s && mv "[email protected]"; } 

您唯一需要做的就是使用新的mvd命令而不是mv

提示:如果是别名,您还可以命名别名为mv(与命令名称相同)。

0

如果你已经有一个具有硬编码路径的脚本(例如,脚本的样子:

mv -nv /path1 /path2 
mv -nv /path3 /path4 
... 

然后可能做是在脚本的顶部加入定义函数的最简单的事情:

mv() { command mv "[email protected]"; sleep 1; } 
+0

谢谢!这似乎工作,但不幸的是,延迟并没有阻止重命名升级。我在原始文章中添加了示例,我可能不得不就此开始一个新主题,因为我现在不知道该怎么做。 –