【发布时间】:2016-06-08 04:05:30
【问题描述】:
我想编写一个简单的 bash 脚本,将默认的 unix/linux 查找程序包装在 bash 中以查找匹配的多个文件。
这是我的名为my_find_command的程序:
#!/bin/bash
patt=""
first=true
for i in "$@"; do
if [ "$first" = true ]; then
patt="-name '$i'"
first=false
else
patt="${patt} -o -name '$i'"
fi
done
echo "$patt"
find . -type f \( ${patt} \)
echo 'done'
假设我确实有一些文件,find 命令可以返回一些文件。
但是当我打电话给my_find_command icon.png profile.png 时,我什么也没得到。
这里出了什么问题?
【问题讨论】:
-
您的脚本在 Linux 上按预期运行,但您可能需要添加 -a 以获取
find . -type f -a \( $patt \)find 的不同实现是挑剔的...... -
您可以将
for循环更简单地编写为:for x; do patt="$patt${patt:+ -o }-name '$x'"; done