2013-01-09 132 views
-1

我有一個問題:我遠程登錄到一個linux系統。我有一堆文件名,我需要驗證它們是否存在於某個目錄(/ u02/csv)和/ u02/csv下的子目錄下。我很快覺得用盡find命令逐個搜索這些文件。作爲一個全新的bie到linux。有什麼方法可以讓linux從文本文件中讀取文件名並搜索這些文件並將結果輸出(例如,如果存在,只列出路徑,否則,只是說否)到另一個文件?linux批量查找文件

B.T.W.,這個文件名列表在我的遠程PC中,你能否也建議我怎麼把它放到linux中?

非常感謝!

山姆

回答

3

喜歡的東西

for line in $(cat files.txt) 
do 
    find /u02 -type f -name $line >> results.txt 
done 

其中files.txt列出您的文件名,每行一個?

+0

謝謝! :)是的,每行的每個文件名。我很抱歉,我可能會問一個愚蠢的問題。我怎樣才能執行這個腳本?我需要給腳本一些擴展來執行,就像在Windows中一樣嗎? – lxiscas

+0

您可以直接在命令行上執行此操作。否則你會想讀一讀[bash編程](http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html) –

+0

非常感謝你!我知道了。 – lxiscas

0

另一個sollution:

find /u02 -type f -name $(cat files.txt | xargs | sed 's/\W/ -o -name /g') >> results.txt 
0

與包含在他們的名字空格的文件工作的一種清潔,高效的解決方案:

while IFS= read -r file; do 
    printf '%s ' "$file" 
    if [[ -e "/u02/csv/$file" ]]; then 
     printf 'exists.\n' 
    else 
     printf 'does not exist.\n' 
    fi 
done <files.txt> results.txt