3

环顾四周,我没有看到我在寻找什么。一些类似的东西,但由于某种原因,我到目前为止尝试的方法没有奏效。

我的主要目标:

  1. 在我的当前目录中运行脚本
  2. 打开图片看看它是什么
  3. 重命名我刚刚查看的图片
  4. 重复该过程而不再次运行脚本

这些是我试图遵循的来源:

Bash Shell 循环遍历文件集

Bash遍历目录并重命名每个文件

如何使用 bash 对目录中的每个文件执行某些操作?

==================================================== =================================

echo "Rename pictures. Path"
read path
for f in $path
do  
    eog $path
    echo "new name"
    read newname
    mv $path $newname
    cat $f
done
4

3 回答 3

2

您应该向脚本传递一个参数,而不是尝试使其具有交互性。您还有许多报价问题。尝试这样的事情(未经测试):

#!/usr/bin/env bash

moveFile() {
    local newName=
    until [[ $newName ]]; do
        printf '%s ' 'new name:'
        read -er newName # -e implies Bash with readline
        echo
    done
    mv -i "$1" "${1%/*}/${newName}"
}

if [[ ! -d $1 ]]; then
    echo 'Must specify a path' >&2
    exit 1
fi

for f in "$1"/*; do
    eog "$f"
    moveFile "$f"
done
于 2012-10-24T06:54:15.280 回答
0

您可能想尝试这样的事情:

for f in $*; do
    eog $f
    echo "new name:"
    read newname
    mv $f $newname
done

如果您命名脚本,例如rename.sh,您可以调用

./rename.sh *gif

查看扩展名为“gif”的所有文件。

于 2012-10-26T21:27:49.680 回答
-2

使用find命令可以递归搜索指定目录中的图像文件。

echo -n "Rename pictures. Input image directory: "
read path

for f in `find $path -type f`
do
    eog $f
    echo -n "Enter new name: "
    read newname
    mv $f $newname
    echo "Renamed $f to $newname."
done
于 2012-10-24T06:50:48.193 回答