「echo」を介して取得した出力は、ターミナルに貼り付けるとコマンドとして機能しますが、スクリプトでは機能しません

はい87

残念ながらスペースが含まれていることが多いアプリによって生成されたファイルを変更しようとしています。ターミナルにコピーを貼り付けた場合に機能する出力を提供するために「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;
jimmij

主な問題は、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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ