如何使用 find 对带空格的文件名进行 for 循环

Rob*_*Rob 5 linux bash find

我有以下脚本 - 它应该使用 find 循环文件名,但它接缝以空格分隔文件名?我需要文件名保持完整

#!/bin/bash

for file in `find -name "*.avi"`
do
./myscript $file
done
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

谢谢

Mag*_*lan 13

还: find -name "*.avi" -exec ./myscript '{}' \;

Womble 的答案在大多数情况下肯定有效,但 Xargs 在所有实现中都有空格并不完美。我从来没有发现 find 的 'exec' 模式被破坏。Solaris 在这方面尤其暴躁。

显然,'-print' 更适合简单地为 for 循环中的文件列表生成输出。但是,如果您在文件列表上运行命令,则只运行 '-exec' 选项会更有效。


wom*_*ble 5

find -name "*.avi" -print0 | xargs -0 -n 1 echo
Run Code Online (Sandbox Code Playgroud)

你不必echoxargs

find -name "*.avi" -print0 | xargs -0 -n 1 ./myscript
Run Code Online (Sandbox Code Playgroud)