• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sed により ~/ の左を全て切り取る)

Linuxで特定のパーティション内の同じファイル名のペアを探し出す方法

このQ&Aのポイント
  • Linuxで特定のパーティション内の同じファイル名のペアを探し出す方法について教えてください。
  • 具体的には、特定のパーティションにマウントされているファイル内の同じファイル名を持つペアを見つけたいです。
  • lsコマンドとfindコマンドを組み合わせて使用する方法が分からず困っています。どなたか解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.3

さっき、回答しようとしたら、締め切られてた。 パスに空白が含まれない前提で、 find /media/usb2 -xdev -type f -printf '%f %p\n' | sort | awk '{if($1==A){if(A!=B)print X;print};B=A;A=$1;X=$0}' "ファイル名 フルパス" の一覧作って、ソートして、ファイル名が重複する物だけを出力

noname#214079
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

あと、別解としてはbasenameとありますね。shellの組み込み関数として無いとしたら、一つ一つbasenameをfork execするより#1の回答で出ている方が速そうですが。 あと、#1の回答は/が一つ足りないような気がします。sed -e 's/.*\///' /を区切りに使うのはパス名と紛らわしいのでsed -e 's|.*/||'でもいいような気もしますが... 自分だったら、sedした後にsort & uniqかけますが。 grepについては、-fを知っておくと何かと便利ですよ。 find /media/usb2 | grep -f allfiles.txt

noname#214079
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

単純に「最後の / より前を全部消す」だけなら sed -e 's/.*\//' でいけるはず. まあもっといろいろ駆使すればパイプライン 1本でいけそうな気もするけど.

すると、全ての回答が全文表示されます。

関連するQ&A