名前が付けられていて、私はこの名前のディレクトリを作るはずです。このディレクトリがすでに存在する場合は、フォルダの名前に接尾辞として_ $ numberを付ける必要があります。新しいフォルダのインデックスを見つける
数が最高値+ 1の例のように計算されます。
名前:素晴らしい
ファイル:
新しいフォルダdummy_3ダミー素晴らしいawesome_2のawesome_4:awesome_5名前:素晴らしい
ファイル:ダミーダミー_
新しいフォルダ:awesome
最高値を見つけるための私のソリューションは、特殊文字のない名前に対してのみ機能します。名前は、たとえば次のようになります。 "!$#& *(%+#$ asdasd \ ^悲しい(@)"、それは
function max_item() {
local prefix="$1"
local max="0"
shopt -s nullglob
for in_file in * ; do
if [[ "$in_file" =~ ^"$prefix"_(-{0,1}[0-9][0-9]*)$ ]]; then
num="${BASH_REMATCH[1]}";
[[ "$max" -lt "$num" ]] && max="$num";
fi
done
echo "$max"
shopt -u nullglob
return 0
}
私はそれが特別に何かを持っていると思います失敗します正規表現の文字が、私はすべての私の考えを使い果たしてしまった
どのように関数を呼び出しますか? – 123
パフォーマンスヒント:for f in *の代わりに、$ {prefix} _ "*'で 'for f 'を使用すると、無駄な反復処理が大幅に削減されます。 – Jens