Synology NASで多くのファイルの名前を変更する簡単な方法を探しています。見つかり、sed
利用可能ですが使用できませんrename
。
以下を使用して、これらのファイルとフォルダのリストを取得できます。
find . \( -type d -name "@*" -prune \) -o \( -name "**" \) -print
上記のfindステートメントは、Synology bashの「」に置き換えられた「/」文字を含むすべてのファイルを表示します。
変更する必要があるすべての特殊文字は次のとおりです。
/ \ : ? ' ’ ´ ’
使用されるプラットフォームおよびファイル共有プロトコルに応じて、これらの文字は異なるように見えたり、異なって表示されたり、まったく表示されなかったり、さまざまな種類の問題を引き起こしたりします。以下では、Synology bashでこれらの文字を見つけることができます。
-name "**" -o -name '*\\*' -o -name "*:*" -o -name "*\?*" -o -name "*\'*" -o -name "*´*" -o -name "*`*"
見つかったすべてのファイルとディレクトリでこれらの文字をどのように変更できますか? 「/」文字から始めます。
助けてくれてありがとう!
ゲイリー
ベストアンサー1
find
コマンドが名前を変更したいファイルセットと正確に一致し、名前を「安全な」ファイル名に変更したいとします。ファイル名の正確な文字がわからない場合は、提案のみを提供できますが、ここには2つあります。
奇妙な文字を削除します。これは、文字を
bash
置き換えることによって基本的に処理できると仮定します。find . -depth \( -type d -name "@*" -prune \) -o \( -name "**" -execdir \ bash -c 'echo "Processing $PWD"; for f; do echo mv -- "$f" "${f///}"; done' _ {} + \)
既知の文字だけが保持されます。
tr
保存したい文字セットが含まれていることを確認してください。find . -depth \( -type d -name "@*" -prune \) -o \( -name "**" -execdir \ bash -c 'echo "Processing $PWD"; for f; do echo mv -- "$f" "$(tr -cd '[:alnum:][:punct:][:space:]' <<<"$f")"; done' _ {} + \)
どちらの場合も、echo
デバッグをアクティブなステートメントに変換するには削除してください。