端末で外部ドライブ上の長いファイルパスを見つける


3

私は大容量をPCフォーマットの新しいRAIDサーバーに移動する必要があります。しかし、このプロセスを中断しているパスとファイル名がいくつかあります。

ターミナルの使い方を知りたいのですが。

  1. ターゲットの外付けドライブを見つける
  2. そのドライブから130文字以上のパス/ファイルを検索します。

誰も手伝ってくれる?

私はどのように私の外付けドライブをターゲットにするかについてよくわからない、 "。type f name '????? ... *'"という長いパスを検索する方法を知っています。

回答:


3

外付けドライブは /Volumes走る ls /Volumes 正確な名前を見るために。

その後使用することができます

find /Volumes/NAME-FROM-ABOVE -print |
    while read line; do [[ ${#line} -gt 130 ]] && echo $line; done

パスとファイル名の組み合わせが130文字を超えるすべてのファイルをリストします。

シモンズ:これは改行や同様のものを含むファイル/パス名には機能しません(これは通常問題にはなりません)。 PPS:ボリューム名にスペースが含まれている場合は、それをラップする必要があります。 "" - > find "/Volumes/LaCie - BRYT" -print ...


だから私がターゲットにしたい私のボリュームは 'LaCie - BRYT'ですが、私はボリュームの名前が私のプリントでめちゃくちゃだと思います。 「未知の主演算子または演算子」が返されます。
handpaintedstudio

編集を参照してください。しかし、Allanの解決策をすべて試してみてください。これは、はるかに優れていて、わずかに速くなっています。また、改行文字を含むファイル名などのエッジケースでも機能します。
nohillside

はい、わかった! find "/ Volumes / LaCie - BYRT"を実行できました。行を読みながら。 do [[$ {#line} -gt 130]]&& do; echo $ line;これはたくさん印刷されました。君たちありがとう!!
handpaintedstudio

4

次のコマンドは、130文字を超えるすべてのファイルを印刷します。

find -E . -type f -regex '.*[^/]{130}'

システムに接続されているディスクを一覧表示するTerminal(bash)コマンドは diskutil。コマンド diskutil list すべてのディスクを出力します - 外付けデバイスに一致する識別子を選択するだけです。

例えば:

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2:                  Apple_HFS FreeAgent Go            499.8 GB   disk3s2
/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk4
   1:                        EFI EFI                     209.7 MB   disk4s1
   2:                  Apple_HFS My Passport for Mac     999.8 GB   disk4s2

disk0disk1、そして disk2 CoreStorageボリュームにあります。 disk3 そして disk4 私の外部のドライバーは何ですか

ドライブにアクセスするには(マウントされていると仮定して)、 /Volumes 適切なマウントポイントのディレクトリ。

「My Passport for Mac」を検索したい場合は、次のコマンドを入力します。

find -E /Volumes/My\ Passport\ for\ Mac/ -type f -regex '.*[^/]{130}'

1
標準 find サポートしていません -regextype残念ながら。
nohillside

@patrix - その通りです...私は別のマシンへのSSHセッションを行っているので、もちろんテストしたところうまくいきました。あ……
Allan

しかし -E 動作します - > find -E . -type f -regex '.*[^/]{130}' :-)
nohillside

1
私はちょうどmanページを読んでいました -E あなたのコメントが入ってきたとき。残念ながら、私は長い間ファイルはありません 本当に 試してみる。 THX!
Allan

だから私の識別子が "disk3s2"ならどうやってそれを書くのだろうか(ごめんね)。
handpaintedstudio
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.