シンボリックリンクが存在しないファイルを一覧表示するには?

シンボリックリンクが存在しないファイルを一覧表示するには?

さまざまなドキュメントでいっぱいの大きな「myfiles」ディレクトリがあり、その構造を変更したくありません。

したがって、各文書タイプに対して(複数の)異なるディレクトリを作成しました。たとえば、「myfiles」ディレクトリ内の各ファイルのシンボリックリンクと、説明と他のメタデータとともに、各シンボリックリンク(同じファイル名を使用)の異なる説明ファイルを含む「images」ディレクトリがあります.jpg.cr2/ imagesディレクトリのシンボリックリンクは、元のリンクファイルと名前が異なる場合があります。

私は、「myfiles」ディレクトリにあるすべての画像ファイルに「images」ディレクトリへのシンボリックリンクを持たせる最も簡単な方法を見つけようとしています。

フォルダ構造の例を見る

/myfiles/a.doc
/myfiles/b.jpg
/myfiles/c.cr2
/myfiles/d.mov

結果が出なければならない

/images/b_800x600.jpg
/images/b_800x600.desc
/images/c_3820x5640.cr2
/images/c_3820x5640.cr2

ベストアンサー1

質問を正しく理解したら、イメージにシンボリックリンクがないmyfilesのファイルが必要です。

#!/bin/bash

OIFS="$IFS"
IFS=$'\n'

files="$(find myfiles/ -type f -name '*.jpg' -or -name '*.cr2')"
for f in $files; do
    list="$(find -L images/ -xtype l -samefile "$f")"
    if [[ "$list" == "" ]]; then
        echo "$f does not have symlink."
    fi
done

IFS="$OIFS"

この方法では、myfiles / 1ディレクトリにa.jpgファイルがあり、image / 3または単にimage /ディレクトリにそれを指すシンボリックリンクがある場合は警告が表示され、そのファイルはシンボリックリンクが見つからないと報告されません。

おすすめ記事