残念ながら、多くの場合、スペースを含むアプリケーションによって生成されたファイルを変更しようとします。端末にコピーして貼り付けると、動作する出力を提供するために「エコー」が得られましたが、コマンドを実行しようとすると機能しません。私が探していますこれ答え、以前は役に立ちましたが、この場合は "${x}"構文も機能しないようです。
#!/bin/sh
cd ~/Data
IFS=$'\n';for i in $(ls); do
echo "$i";
filename="$i"
date=$(date -n +%Y-%m-%d)
new_filename="$date$filename"
echo mv \'"${filename}"\' \'"${new_filename}"\'
mv \'"${filename}"\' \'"${new_filename}"\'
done;
ベストアンサー1
主な問題は、出力ls
コマンドを繰り返すことです。グローブを使う*
:
#!/bin/sh
cd ~/Data
for i in *; do
echo "$i"
filename="$i"
date=$(date -n +%Y-%m-%d)
new_filename="${date}${filename}"
echo mv "${filename}" "${new_filename}"
mv -- "${filename}" "${new_filename}"
done
また、名前を正しく処理する--
ために追加しました。しかし、私のコマンドにはオプションはありませんが、別のバージョンがある可能性があるため、そのままにしておきます。mv
-
date
-n