mv そのファイルやディレクトリはありませんか?複数のディレクトリのファイル名を変更する

mv そのファイルやディレクトリはありませんか?複数のディレクトリのファイル名を変更する

これは、部分的にBASHに関する私の知識が非常に表面的であるためです。

スクリプトは次のとおりです。

eighteen=(2018*/*)
newe=`echo "$eighteen" | sed -e 's/\(-\)*$//g'`

while read f <&3 && read nf <&4; do     
    mv -v "${f}" "${nf}"
    break
done 3<"$eighteen" 4<"$newe"

-複数のサブフォルダのすべてのファイル名の末尾にあるシンボルを作成し、削除した無効なスクリプトを取り出そうとします。

私が得るエラーは次のとおりです。./cleanup.sh: line 16: 2018-08-13/untitled-102.arw: No such file or directory

mvエラーが行で発生するのではなく、次に発生することは注目に値しますdone 3<"$eighteen" 4<"$newe"

StackExchangeの答えからwhileループをコピーしました。ファーストフードは消化によくない場合が多く、迅速な解決が可能です。理解を深めるためにご了承ください。前述の置換を呼び出す方法4<"$newe" nf <&4と詳細については、どのように検索する必要があるのか​​を確認してください。while文の文脈外に適用されますか?

ベストアンサー1

適切なツールを使用して正規表現を保存できる単純な欠陥のあるシェルスクリプトを使用しているようです。

rename -n 's/-*$//' 2018*/*

-n実際に名前を変更するのに十分な出力がある場合は、スイッチを削除してください。

男の名前を変える

警告する これを行うこともできないかもしれない同じ名前の他のツールがあるので注意してください。

パッケージの一部である名前変更コマンドはutil-linuxそうではありません。

次のコマンドを実行すると:

$ rename

ご覧perlexprのとおり、これが正しいツールのようです=)

そうでない場合は、それをデフォルト値に設定し(通常はすでに適用されている)、Debian次のように派生しますUbuntu

$ sudo apt install rename
$ sudo update-alternatives --set rename /usr/bin/file-rename

ArchiLinuxの場合:

pacman -S perl-rename

RedHatシリーズディストリビューションの場合:

yum install prename

'prename'パッケージは次の場所にあります。エッフェルリポジトリ。


Gentooの場合:

emerge dev-perl/rename

*BSDの場合:

pkg install gprename

またはp5-File-Rename


Macユーザーの場合:

brew install rename

他のディストリビューションにこのコマンドがない場合は、パッケージマネージャを検索してインストールするか、手動で行う(学科がありません...)


このツールはもともとPerlの父親であるLarry Wallによって書かれました。

おすすめ記事