13

Linux システムでディレクトリを見つけて名前を変更しようとしています。

フォルダ名は次のようなものです:thefoldername-23423-431321

thefoldername一貫していますが、数字は毎回変わります。

私はこれを試しました:

find . -type d -name 'thefoldername*' -exec mv {} newfoldername \;

コマンドは実際に機能し、そのディレクトリの名前を変更します。しかし、端末にそのようなファイルやディレクトリがないというエラーが表示されました。

どうすれば修正できますか?

4

5 に答える 5

21

-depthオプションで取り除くことができる無害なエラーです。

find . -depth -type d -name 'thefoldername*' -exec mv {} newfoldername \;

Find の通常の動作は、ディレクトリを処理してからそれらに再帰することです。名前を変更したので、再帰しようとすると文句が見つかります。この-depthオプションは、find に最初に再帰するように指示し、次にディレクトリを処理します。

于 2012-10-23T21:20:52.933 に答える
1

前の回答で、フォルダーの内容が消えました。
これが私の解決策です。それはうまくいきます: for i in find -type d -name 'oldFolderName'; do dirname=$(dirname "$i") mv $dirname/oldFolderName $dirname/newFolderName done

于 2014-09-30T14:53:09.333 に答える