将文本前置到文件名的开头

时间:2016-02-02 23:53:05

标签: shell for-loop prepend

我想在目录中的每个文件的开头添加一串文本。字符串是uniwisc

当我运行脚本时:

#!/bin/sh

url="ftp://rammftp.cira.colostate.edu/Lindsey/spc/ir/"

wget -r -nd --no-parent -nc -P /awips2/edex/data/goes14/ $url

find /awips2/edex/data/goes14/ -type f -exec cp {} /awips2/edex/data/uniwisc/ \;

for f in /awips2/edex/data/uniwisc/*; 
    do
    f="$(basename $f)"
    mv "$f" "uniwisc.$f"
    done;

find /awips2/edex/data/uniwisc/ -type f -mmin -6 -exec mv {} /awips2/edex/data/manual/ \;
exit 0

我收到错误mv: cannot stat '<filenames>' "No such file or directory.

1 个答案:

答案 0 :(得分:0)

有许多不同的方法可以做到这一点。

使用内置于bash shell中的参数扩展:

for f in <dir path>/*; do
    mv "$f" "${f%/*}/uniwisc.${f##*/}"
done

使用重命名命令:

rename 's!^!uniwisc.!' *

使用basename,如CodeGnome建议:

for f in <dir path>/*; do
    mv "$f" "$(dirname "$f")/uniwisc.$(basename "$f")"
done

我打算写更多的方法,但是有很多方法,并且它们没有显着改变。就个人而言,我会在那种情况下使用rename命令。