./wid_*.jil
スクリプトの実行時にコマンドラインからこの情報を入力できるように指定するrenameというスクリプトがあります。
for file in ./wid_*.jil
do
mv -i "${file}" "${file/orig/update}"
done
コマンドラインに次のように入力したいと思います。
[user@location dir1]$ rename dir2/
その後、スクリプトはdir2/
すべてのファイルを見つけてorig
名前をupdate
。
私はUnix / Linuxに初めて触れたので、用語が正しくないか、説明が悪い場合はお詫び申し上げます。
答え1
$ 1はbashスクリプトの最初のパラメータになります。
#!/bin/bash
directory="$1"
echo "$directory"
次のようないくつかのチェックを実行することもできます。
#!/bin/bash
directory="$1"
[ -z "$directory" ] && echo "Please provide a directory" && exit 1
[ ! -d "$directory" ] && echo "Directory not found" && exit 2
for file in "$directory"/wid_*.jil
do
mv -i "${file}" "${file/orig/update}"
done
答え2
シェルは、すべてのコマンドライン引数を次のように格納します。位置パラメータ、、、、など。$1
$2
$3
ファイル名の文字列を変更してディレクトリ内の一致するすべてのファイルの名前を変更する簡単なスクリプトはwid_*.jil
次のとおりです。orig
update
#!/bin/sh
dir="$1"
if [ -d "$dir" ]; then
printf 'No such directory: %s\n' "$dir" >&2
exit 1
fi
for filepath in "$dir"/wid_*.jil; do
filename="$( basename "$filepath" | sed 's/orig/update/g' )"
mv -i "$filepath" "$dir/$filename"
done
または、外部ユーティリティを使用せずに次を使用しますbash
。
#!/bin/bash
dir="$1"
if [[ -d "$dir" ]]; then
printf 'No such directory: %s\n' "$dir" >&2
exit 1
fi
for filepath in "$dir"/wid_*.jil; do
filename="${filepath##*/}"
filename="${filename//orig/update}"
mv -i "$filepath" "$dir/$filename"
done