我有一个非常简单的重命名脚本,我在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