0
#!/bin/bash

shopt -s nullglob              

for i in $2; do
  md5sum=$(md5sum -q "$file")        
  echo "-- Found: $file ($md5sum)"
  for duplicate in $2; do
    if [[ "$md5sum" = "$(md5sum -q "$duplicate")" ]]; then
      rm -v "$duplicate"
    fi
  done
done

Linux のディレクトリから重複を削除しようとしています。次を使用してこのスクリプトを呼び出します。

source  ~/my-applications/bin/remdup

しかし、私が得たエラーは、md5 コマンドが見つからず、重複したディレクトリが見つからないというものでした。何かヒントはありますか? また、私は Linux の経験がほとんどないため、このコードは、インターネットで学んだことをつなぎ合わせて作成したものです。そのため、ヒントは大歓迎です。これが呼び出されるスクリプトはシェルであり、これはbashなので、それが何かを変えるかどうかはわかりません

編集:他のスクリプトから変数を引き継いでいるため、何かを $2 に変更する必要があります 編集:行 7 md5 を md5sum に変更しました

4

1 に答える 1

0

このようにしてみてください:

#!/bin/bash

shopt -s nullglob              

for file in "$2"/*
do
  md5sum=$(md5sum < "$file")        
  echo "-- Found: $file ($md5sum)"
  for duplicate in "$2"/*
  do
    [ "$file" = "$duplicate" ] && continue
    [ "$md5sum" = "$(md5sum < "$duplicate")" ] && rm -v "$duplicate"
  done
done
于 2013-11-14T13:21:22.163 に答える