3

周りを見回しても、探していたものは正確にはわかりませんでした。いくつかの同様のものがありますが、何らかの理由でこれまで試したことはうまくいきませんでした.

私の主な目標:

  1. 現在のディレクトリでスクリプトを実行する
  2. 写真を開いて、それが何であるかを確認してください
  3. 表示した画像の名前を変更する
  4. スクリプトを再度実行せずにプロセスを繰り返す

これらは私が従おうとした情報源です:

ファイル セットに対する Bash シェル ループ

ディレクトリを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 に答える