我以前习惯使用 BASH,但最近我发现了 ZSH,不得不说它运行良好。不过,下面的 find 指令让我有点困惑。
假设我们有 3 个 webp 文件和一个 listing.txt,其中有 2 行 1.* 和 3.*,因为我想将它们的扩展名从 .webp 重命名为 .webp.new。
以下是使用 BASH 的结果
arnaud@L340:~/Downloads/Test$ ls
1.webp 2.webp 3.webp listing.txt
arnaud@L340:~/Downloads/Test$ cat listing.txt
1.*
3.*
arnaud@L340:~/Downloads/Test$ find $(</home/arnaud/Downloads/Test/listing.txt) -name "*.webp" -exec sh -c 'mv "$1" "${1%.webp}.webp.new"' _ {} \;
arnaud@L340:~/Downloads/Test$ ls
1.webp.new 2.webp 3.webp.new listing.txt
arnaud@L340:~/Downloads/Test$
=> 2 个文件 1.* 和 3.* 具有新的扩展名。
使用 ZSH 时,我收到以下错误:
╭─ ~/Downloads/Test ▓▒░ ░▒▓ ✔ 5m 57s arnaud@L340
╰─ find $(</home/arnaud/Downloads/Test/listing.txt) -name "*.webp" -exec sh -c 'mv "$1" "${1%.webp}.webp.new"' _ {} \;
find: ‘1.*’: No such file or directory
find: ‘3.*’: No such file or directory
╭─ ~/Downloads/Test ▓▒░
您知道为什么它不适用于 ZSH 吗?谢谢!