残念ながらスペースが含まれていることが多いアプリによって生成されたファイルを変更しようとしています。ターミナルにコピーを貼り付けた場合に機能する出力を提供するために「echo」を取得できましたが、コマンドを実行しようとすると機能しません。私は以前に私を助けたこの答えを見ました、しかし「$ {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;
主な問題は、ls
コマンドの出力をループすることです。*
代わりにglobを使用してください:
#!/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
オプションがありませんが、バージョンが異なる可能性があるため、そのままにしておきます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加