2016-04-16 13 views
0

findコマンドで使用するフォルダの場所を格納するためにtxtファイルを使用しようとしています。しかし、\」フォルダーの場所にファイルを検索するLinux Bash

addfolder="$addfolder $Folder" 

folder.txtを "$のaddfolder"

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

でファイル

に一つだけのフォルダの場所にフォルダが見つからない作品を取得し、交換しておく: - メイン/公開 メイン/全般 未使用 旧バックアップファイル

#!/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

通常の変数は、単一の文字列のみを保持する必要があります。

配列を使用、文字列のリストを保持するために:!。同じ@theotherguy

#!/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

は '見つけ= $(見つける "$ {addfolder [@]}" -path「*/BAK /のために行く必要があります* "-type f -iname" * $ ffind * "| sort)' –

+0

今日の脳死は喜んでいるはずです! – user1184628

関連する問題