シェルスクリプトを使用するには、テキストファイルの各行への絶対パスが必要です。

シェルスクリプトを使用するには、テキストファイルの各行への絶対パスが必要です。

.XMLファイルのリストを含むテキストファイルがあります。

ファイル内の各XMLの絶対パスが必要です。

次のシェルスクリプトを試しましたが、複数回試行した後でも、doタグ内でfindコマンドは機能しません。

    #!/bin/sh
    NAMES=`cat list2.txt`
    for NAME in $NAMES; 
   do
     echo "$NAME"
     find $PWD -type f -name "$NAME"
   done

ベストアンサー1

ループは問題を解決する誤った方法です。各ファイルのディレクトリツリーをクロールすることは非効率的です。すべてのファイルをアーカイブするには、ディレクトリを一度だけクロールする必要があります。良い:

find "$PWD" -type f -print0 | awk -F / '
   !list_processed {names[$0]; next}
   $NF in names' list.txt RS='\0' list_processed=1 -

list.txtパスではなくファイル名のリストが1行に1つずつ含まれているとします。

おすすめ記事