これはばかげて簡単に行えるはずです。配列の要素をひとつだけ出力したいだけです。しかし、私がprint arr[1]
のようなコマンドから得られるのは空の行です。アレイの単一要素を印刷する
#!/bin/bash
find -X $1 -type f |
xargs md5 |
awk '
NF == 4 {
md5[$4]++;
files[$2]++;
}
END {
for (i = 1; i <= NF; i++)
for (j = i + 1; j <= NF; j++)
if (md5[i] == md5[j]) {
print "These are duplicates: "
print files[j+1]
print files[i]
}
'
exit 0
はそれが非常に簡単に重複したファイルファインダーです:
は、ここに私の全体のbashスクリプトです。問題のある部分は、awk内のEND()ステートメントにあります。
これはちょうど私に「これらは重複しています。私は情報が利用可能であることを知っています。なぜなら、これをEND {}に追加します:for (x in arr); print x
であり、期待通りにarrのすべての要素を完璧に印刷します。
私は何か非常に愚かなことをしているに違いない。
あなたの配列は数値でインデックスされていますか? –
私はそれがすべてのawk配列の仕組みだと思っていました。それらが数値的に索引付けされていない場合、どのように個々の要素を参照できますか? –
上記のコード全体を見ることができるので、配列要素をインデックスするために何もしなかったことがわかります。それが自動的に起こらないなら、何とかそれを紹介する必要があります。 –