重命名特定目录中的目录,软链接

时间:2016-03-11 19:45:26

标签: bash directory rename

我的作业是编写一个bash脚本,我在其中键入一个目录作为参数 比如./hw.sh /home/stuff

如果有任何目录,我必须像这样重命名它们 oldname twitch新名称twitchdir

如果目录中除了目录之外还有其他内容,则其名称应为: oldname things.txt新名称things.txtetc

if [ -z $1 ] || ! [ -d $1 ]; then

        echo "ERROR";
else 

        for row in $1/*;
        do
                if [ -d "$row" ]; then
                        mv "$row" "$rowdir"
                else
                        mv "$row" "$rowetc"
                fi
        done
fi

如果我正在运行脚本,它告诉我我无法移动参数。 第一个if是分析参数是否是目录。

1 个答案:

答案 0 :(得分:1)

导致错误的原因是"$rowdir""$rowetc",因为您没有定义此类变量。因此,mv命令实际上是试图将文件移动到未定义的变量值'',这是失败的。因此,如果要将字符串附加到原始变量的值,请按以下步骤操作:

mv "$row" "$row"dir           # for directories
mv "$row" "$row"etc           # for others

mv "$row" "${row}dir"           # for directories
mv "$row" "${row}etc"           # for others

例如,在仅包含文件somefile的工作目录中,请考虑

$ ls
somefile
$ row=somefile
$ mv "$row" "$rowetc"
mv: cannot move ‘somefile’ to ‘’: No such file or directory
$ mv "$row" "$row"etc
$ ls
somefileetc