2016-04-16 43 views
0

我正嘗試使用txt文件來存儲要在查找命令中使用的文件夾位置。但不斷收到未找到文件夾的作品只有一個文件夾位置在文件使用文件查找文件夾位置Linux Bash

以 「$ addfolder」

found=$(find "$addfolder" ! -path "*/.bak/*" -type f -iname "*$ffind*" | sort) 

和更換\」

addfolder="$addfolder $Folder" 

folder.txt: - 主/公共 主要/一般 未使用 舊備份文件

#!/bin/bash 
addfolder=""  
filename="Settings/folders.txt" 

#Read Folder.txt for locations 
while read -r Folder; do 
if [ ! "$Folder" == "" ];then 
    if [ -d "$Folder" ]; then 
    addfolder="$addfolder \"$Folder\"" 
    echo "$addfolder" 
    fi 
fi 
done < "$filename" 

if [ "$addfolder" == "" ]; then 
exit 
fi 

echo -e "\e[36mEnter Filename To Find :-\e[0m" 
read -p "" ffind 
echo -e "\e[92mSearching:\e[0m" 
found=$(find $addfolder ! -path "*/.bak/*" -type f -iname "*$ffind*" | sort) 

echo -e "\e[33m$found\e[0m" 
echo "Press Enter To Exit" 
read -s -n 1 -p "" 

回答

0

正則變量應該只包含單個字符串。

爲了保持字符串列表,使用數組:。

#!/bin/bash 
addfolder=()  
filename="Settings/folders.txt" 

#Read Folder.txt for locations 
while IFS= read -r Folder; do 
if [ ! "$Folder" == "" ];then 
    if [ -d "$Folder" ]; then 
    addfolder+=("$Folder") 
    echo "${addfolder[@]}" 
    fi 
fi 
done < "$filename" 

if [ "${#addfolder[@]}" == 0 ]; then 
exit 
fi 

echo -e "\e[36mEnter Filename To Find :-\e[0m" 
read -p "" ffind 
echo -e "\e[92mSearching:\e[0m" 
found=$(find "${addfolder[@]}" ! -path "*/.bak/*" -type f -iname "*$ffind*" | sort) 

echo -e "\e[33m$found\e[0m" 
echo "Press Enter To Exit" 
read -s -n 1 -p "" 
+1

@theotherguy同樣應該去'找到= $(發現 「$ {addfolder [@]}」 -path「*/BAK/*「-type f -iname」* $ ffind *「| sort)' –

+0

今天的歡呼聲大腦應該已經看到了! – user1184628