2016-03-21 31 views
-1

我有一個文件列表搜索慶典〜如何通過目錄中的文件

  • 購物,LIST.TXT
  • 我們購物,LIST.TXT
  • 的test.txt
  • 我-test.txt

我想運行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

我可以知道這個'$ {*}'做什麼嗎? –

+2

'ls *'shopping'*'有什麼問題? – choroba

+0

kiss'if [[$ fs =〜shopping]]' –

回答

-1

只使用bash擴展(只有你必須評估兩次)。 Bash從here加入。

files=`IFS=* eval 'echo *"${*}"*'` 

然後你可以遍歷$files

for i in $files; do 
    echo $i 
done 
+0

謝謝@pacholik我似乎不知道如何將它合併到我的代碼,你可以檢查代碼我在我的答案中添加了? – relidon

+0

@relidon:已編輯。我以前誤解過它。 – pacholik

1

這裏有一個簡單的暴力循環。

for file in *; do 
    t=true 
    for word in "[email protected]"; do 
     case $file in 
      *"$word"*) ;; 
      *) t=false; break;; 
     esac 
    done 
    $t && echo "$file" 
done 

我相信這應該是可移植到任何POSIX外殼,並可能超越(舊Solaris等)。