別のディレクトリで重複フ​​ァイルを見つける

別のディレクトリで重複フ​​ァイルを見つける

次の名前のファイルがあります:f{number}.ext

別のディレクトリには、次のディレクトリのリストが存在します:

  • 001
  • 002
  • 003
  • ....

これらの各ディレクトリには、次のファイルのリストが含まれています。

  • f001.拡張子
  • f002.拡張子
  • ...

ファイル名は各ディレクトリで繰り返されていますが、これらは異なるファイルです。参照f{number}.ext先のディレクトリのリストでこのファイル ( ) を見つけて、ルート ディレクトリ名 (例) を取得する003か、ファイルが見つからない場合はメッセージを出力する必要があります。

fdupesこの操作に使用できますか?

答え1

次の bash スクリプトを使用できます:

#!/bin/bash
for iNumb in '001' '002' '003' '004' '005'; do
  myFile=`ls */f${iNumb}.ext 2>&1`

  if [ "${myFile:0:2}" == "ls" ]
  then
    echo "File f${iNumb}.ext: File not found"
  else
    echo "File f${iNumb}.ext:" `dirname ${myFile}`
  fi
done
  • 2>&1、ファイルが見つからない場合の ls のエラー メッセージを処理します (例ls: cannot access */f005.ext: No such file or directory)。
  • if文字列がmyFileで始まるかどうかls(その場合はエラー)、または で始まらないかどうか (その場合はファイルが見つかったかどうか)をテストします。
  • dirnameディレクトリを返します。basenameファイル名を返します。

関連情報