作为清理服务器上文件夹的脚本的一部分,我编写了一个查找正则表达式(在 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