2014-01-21 40 views
0

我有以下文件「nbr_chk.txt」,此文件包含可以在任何目錄(從1到10)中的數字。子目錄,他們都是用於檢查目錄和文件的腳本包含一個詞

nbr_chk.txt 
612345678 
623456789 
634567890 

我想用這個文件做一個腳本,並執行以下操作的第5和第6號:

for i in 'cat nbr_chk.txt' 
do 
    ls -lrtd /*/d5d6/i to find the directory 
    if there is more than one directory print the directories 

    if there is only 1 directory use it and find if there is a file that contains the word " test" and print number xxxxxxxxx 


done 

編輯1:

例如,號碼612345678可能在以下目錄/ 05/45/612345678 中,但也可以在目錄/ 09/45/612345678中。

因此,我需要做一個ls -lrtd/*/....來查找目錄。

如果有多個目錄,我需要創建一個錯誤消息

D5意味着第5位和D6數的第6位。 如果該號碼612300012位5 = 0和位6 = 0和I將不得不使用 LS -lrtd/*/00/612300012


如果是在一個其他語言除了Unix我想知道如何去做,但在這裏我迷路了。

感謝

+0

請解釋一下你的意思是什麼; ①「一個號碼可以在任何目錄(從1到10)」,②「子目錄是第5號」,③「如果有多個目錄」 - 在哪裏?如果有幾個子目錄和一個包含目標文件的文件呢? – Alfe

+0

例如,號碼612345678可以位於以下目錄/ 05/45/612345678中,但也可以位於目錄/ 09/45/612345678中。爲此,我需要執行ls -lrtd/*/....來查找目錄。 – BigBen59

+0

請解釋您的意思是「在以下目錄中」。這裏的人們不喜歡猜謎遊戲;這會讓你的問題更加不具吸引力,所以你至少應該提出一個體面的描述,否則你最終可能得不到答案。 – Alfe

回答

0

的規格是不是太清楚,但我需要一些猜測,並提出了這一點:

#!/bin/bash 

for i in $(cat nbr_chk.txt) 
do 
    dirName=d${i:4:1}d${i:5:1} 
    grep -q " test" "$dirName"/* && echo "$i" 
done 

這不能解決你有因爲一些目前仍不清楚的所有問題(至少對我來說)。請詳細說明未達標的細節,以便我可以將它們放入解決方案中。

0

我想你可能會尋找這樣的事情:

#!/bin/bash 

for i in $(cat nbr_chk.txt) 
do 
    dir=d${i:4:1}d${i:5:1} 
    echo Checking $dir... 
    dirlist=$(find . -type d -name "$dir") 
    ndirs=$(find . -type d -name "$dir" | wc -l) 
    if [ $ndirs -gt 1 ]; then 
     echo $dirlist 
    fi 
    if [ $ndirs -eq 1 ]; then 
     cd $dirlist 
     grep -q " test" * 2> /dev/null && echo $i 
    fi 
done 
+0

這是否解決了您的問題?如果是這樣,你能接受我的回答,所以我得到一個可愛的大綠色勾號嗎?如果沒有,請說出什麼地方出錯或沒有工作,所以我(和其他人)可以進一步幫助你。 –

相關問題