touch 1.txt 2.txt
find . -name "[12].txt" -exec sh -c 'echo "${1}"' sh {} + -exec echo {} +
./2.txt
./2.txt ./1.txt
为什么echo
内部sh -c
只输出一个文件?今天我以为我理解了“find”的 -exec 选项的find
工作原理,但现在又感到困惑了。得到相同的结果。TIA-exec bash
touch 1.txt 2.txt
find . -name "[12].txt" -exec sh -c 'echo "${1}"' sh {} + -exec echo {} +
./2.txt
./2.txt ./1.txt
为什么echo
内部sh -c
只输出一个文件?今天我以为我理解了“find”的 -exec 选项的find
工作原理,但现在又感到困惑了。得到相同的结果。TIA-exec bash
和:
find
将尽可能多的找到的文件传递给sh
,并且您要求sh
将第一个文件(${1}
或$1
简称)传递给echo
。要通过所有这些,请改用"$@"
:或者,要为每个参数
sh
调用echo
一次,请对位置参数使用循环(位置参数是循环for
默认情况下循环的参数):