2017-04-05 4 views
-1

残念ながら私の知識はあまりよくないので、私は非常に非標準のタスクを持っています。bashを使ってリストにないファイルを特定する方法は?

私はファイルリストを持つファイルを持っています。

例:/tmp/my/file1.txt /tmp/my/file2.txt

にはどうすればフォルダ/tmp/myからのファイルが存在し、スクリプトが実行された後、2種類のメッセージを持っていることを確認することができますスクリプトを書くことができます。

1 - ファイルが存在し、ファイルを表示:

/tmp/my/file1.txt 
/tmp/my/file2.txt 

2 - あなたのリストに含まれていないファイルやフォルダを含むフォルダ/tmp/myを。ファイルとフォルダ:

/tmp/my/test 
/tmp/my/1.txt 
+3

どのように「標準的な仕事」ではないのですか?何を試みましたか? –

+0

どのような条件で何を印刷するべきか、存在しないファイルや既存でないファイルをすべて印刷したり、特別に注文したり、プレフィックスを付ける必要があるかどうかはわかりません。 – taifwa

+0

こんにちは、存在するだけです。フォルダには – mulrus

答えて

0

あなたはファイルとフォルダについてはっきりしていないようです。

とにかく、私はここで行く、配列でそれを試してみたかった:

unset valid_paths; declare -a valid_paths 
unset invalid_paths; declare -a invalid_paths 
while read -r line 
do 
if [ -e "$line" ] 
    then 
    valid_paths=("${valid_paths[@]}" "$line") 
    else 
    invalid_paths=("${invalid_paths[@]}" "$line") 
    fi 
done < files.txt 
echo "VALID PATHS:"; echo "${valid_paths[@]}" 
echo "INVALID PATHS:"; echo "${invalid_paths[@]}" 
+0

OKが含まれています。ごめんなさい。私は明確にすることができます:ファイルのみ。 – mulrus

+0

上記のtaifwaで説明されているように、 '-e'ではなく' test'で '-f'を使います。 – fzd

0

あなたはファイル存在するかどうかを確認することができます(ファイルのリストを想定し、1行につき1つのファイル名)と、既存の印刷しますY:とここに接頭辞が存在し、この

# Part 1 - check list contents for files 
while read thefile; do 
    if [[ -n "$thefile" ]] && [[ -f "/tmp/my/$thefile" ]]; then 
     echo "Y: $thefile" 
    else 
     echo "N: $thefile" 
    fi 
done < filelist.txt | sort 

# Part 2 - check existing files against list 
for filepath in /tmp/my/* ; do 
    filename="$(basename "$filepath")" 
    grep "$filename" filelist.txt -q || echo "U: $filename" 
done 

ファイルを使用して接頭辞を持つものは、他のすべてはN:

が付いています第二節では、ファイルリストに含まれていないtmpディレクトリ内のファイルは

あなたはパスが存在することを確認し、-dのための通常のファイルである-fテストを入れ替えることができU:(/行方不明の予期しない)で標識されています(存在し、ディレクトリである)、または-e(存在)

は、より多くのオプションのための

man test 

を参照してください。

+0

こんにちは。私はFILE1.TXT追加とSEE: Y: /tmp/my/file1.txtしかし、私は見カント: N: /tmp/my/file2.txt私は以下を参照してください。 N: – mulrus

+0

Nは空の行と一致しています。上記のスクリプトは、リスト上の名前のみをチェックします。 – taifwa

+0

更新された例では、見つかったファイルがリストにないファイルも報告されます。 – taifwa

関連する問題