在 bash 行之间插入延迟



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

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

它在重命名部分抛出各种垃圾。它弄乱了文件名和目录名称,我不知道为什么。

如果您计划从终端执行所有这些mv命令,则可以创建一个bash别名:

alias mvd='sleep 2s && mv'

就脚本而言,由于脚本不理解 bash 别名(至少很容易),您可以在脚本的开头构建类似的函数:

function mvd { sleep 2s && mv "$@"; }

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

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

如果您已经有一个具有硬编码路径的脚本(例如,该脚本如下所示:

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

那么最简单的事情可能是在脚本顶部定义一个函数,方法是添加:

mv() { command mv "$@"; sleep 1; }

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

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

最新更新