我有一个文件列表
我想运行myscript shopping
并获取包含shopping
字样的两个文件。我想运行myscript our list
并获取一个文件。
此刻我有这个
if [[ $fs =~ .*${*}*.* ]]; then
echo $fs
fi
它有点工作,但是如果每个变量都有间隙,它就不会给我our-shopping-list
。如果我输入myscript our list
myscript our - list
我有一个很大的文件列表,想通过猜名称来找到我需要的文件
我尝试申请@ pacholik的代码
snippetdir="~/my_snippets/"
for filename in $snippetdir*; do
file=`basename "$filename"`
fs=${file%.*}
for i in ${*}; do
for j in *${i}*; do
if [[ $fs =~ .*$j*.* ]]; then
echo $fs
fi
done
done
done
答案 0 :(得分:1)
这是一个简单的暴力循环。
for file in *; do
t=true
for word in "$@"; do
case $file in
*"$word"*) ;;
*) t=false; break;;
esac
done
$t && echo "$file"
done
我认为这应该可以移植到任何POSIX shell,并且可能超出(旧的Solaris等)。
答案 1 :(得分:-1)
仅使用bash扩展(只需要评估两次)。 Bash从here加入。
files=`IFS=* eval 'echo *"${*}"*'`
然后你可以迭代$files
for i in $files; do
echo $i
done