为什么在 macos 12.6.x 上运行“find -E -regex”时出现此错误?

为什么在 macos 12.6.x 上运行“find -E -regex”时出现此错误?

作为清理服务器上文件夹的脚本的一部分,我编写了一个查找正则表达式(在 Macos 12.6.x 上),它将查找名为“YYYY_MM_DD”的目录,然后将该目录的名称更改为“newName” 。

我可能会安装服务器,然后从 Mac 运行脚本。我知道将其移至 Linux 服务器并使用 gnu find 运行可能更有意义,但我刚刚学习 bash 脚本,因此我必须在 mac 上进行测试,然后更改为在 Linux 上运行。

在将 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

相关内容