macos 12.6.xで "find -E -regex"を実行するとこのエラーが発生するのはなぜですか?

macos 12.6.xで

サーバー上のフォルダをクリーンアップするスクリプトの一部として、「YYYY_MM_DD」というディレクトリを見つけて、そのディレクトリの名前を「newName」に変更するfind regex(Macos 12.6.x)を作成しました。

サーバーをインストールしてからMacでスクリプトを実行することもできます。これをLinuxサーバーに移動し、gnu findを使用して実行する方が合理的かもしれませんが、bashスクリプトを学んでいるので、MacでテストしてからLinuxで実行するように変更する必要があります。

findコマンドをスクリプトに統合する前にテストしています。結果が正しいことを確認したい。

この find コマンドを実行すると、コマンドが動作しても「該当するファイルやディレクトリはありません」というエラーが発生します。

インターネット検索を試しましたが、コマンドを実行したときにこのエラーが発生する理由がわかりません。

find コマンドと結果は次のとおりです。

$ find -E ./ -type d -regex '.*([0-9]+(_[0-9]+)+)$' -execdir mv {} "newName" \;
find: .//folder1/folder2/2021_03_17: No such file or directory

「2021_03_17」というディレクトリを見つけて、希望の「newName」に名前を変更しました。

「該当するファイルやディレクトリがありません」と表示されるのはなぜですか?

ベストアンサー1

良い実行コマンド:

find -E ./foo -type d -regex '.*([0-9]+(_[0-9]+)+)$' -depth -execdir mv {} "newName" \;
vagrant@freebsd:~ % tree foo
foo
└── bar
    └── 2023_02_23

3 directories, 0 files
vagrant@freebsd:~ % find -E ./foo -type d -regex '.*([0-9]+(_[0-9]+)+)$' -depth -execdir mv {} "newName" \;
vagrant@freebsd:~ % tree foo
foo
└── bar
    └── newName

3 directories, 0 files

おすすめ記事