ファイルを見つけてアクションを取る方法(検索+実行)

ファイルを見つけてアクションを取る方法(検索+実行)

私は約3200のウェブサイトを深度2としてダウンロードしました。これで、各Webサイトのファイルを含む多くのフォルダを含むデフォルトフォルダ(abc)が作成されました。したがって、私のフォルダabcには3200個のフォルダが含まれており、各フォルダにはWebサイトのテキストを含むファイルを含む他のフォルダが含まれています。また、各ファイルのテキストを編集するスクリプトもあります。これは lynx.sh というファイルに保存されます。

#!/bin/bash
fileA=$1
while IFS= read -r lineA
do
LTRA=$(echo "${lineA:0:1}")
catA=$(lynx -dump -nonumbers -nomargins -nolist -noprint -width 1000 -assume_charset=utf-8 $2/*.* )
editA=$(echo "$catA" | sed -e 's/\[[^][]*\]//g')
editB=$(echo "$editA" | sed -e 's/\s\+/\n/g')
editC=$(echo "$editB" | sed '/^http/ d' )
editD=$(echo "$editC" | sed '/^IFRAME/ d' )
editE=$(echo "$editD" | sed 's/<[^>]*>//g' )
editF=$(echo "$editE" | sed -r 's/[^aáäbcčdďdzdžeéfghchiíjklĺľmnňoópqrŕsštťuúvwxyýzžAÁÄBCČDĎDZDŽEÉFGHCHIÍJKLĹĽMNŇOÓPQRŔSŠTŤUÚVWXYÝZŽ][^aáäbcčdďdzdžeéfghchiíjklĺľmnňoópqrŕsštťuúvwxyýzžAÁÄBCČDĎDZDŽEÉFGHCHIÍJKLĹĽMNŇOÓPQRŔSŠTŤUÚVWXYÝZŽ]+//g' )
editG=$(echo "$editF" | sed s'/[^aáäbcčdďdzdžeéfghchiíjklĺľmnňoópqrŕsštťuúvwxyýzžAÁÄBCČDĎDZDŽEÉFGHCHIÍJKLĹĽMNŇOÓPQRŔSŠTŤUÚVWXYÝZŽ]$//')
editH=$(echo "$editG" | sed s'/^[^aáäbcčdďdzdžeéfghchiíjklĺľmnňoópqrŕsštťuúvwxyýzžAÁÄBCČDĎDZDŽEÉFGHCHIÍJKLĹĽMNŇOÓPQRŔSŠTŤUÚVWXYÝZŽ]//')
editI=$(echo "$editH" | sed 's/ .*//')
editJ=$(echo "$editI" | sed '/^$/d' )
echo "$editJ" > $2/"blaaa"_lynx.txt
echo "$lineA"
done <"$fileA"

各ファイルのテキストを編集可能にします。すべての単語は新しい行にあります。私は以前このスクリプトを何度も使用してきましたが、私が所有しているすべてのウェブサイトの名前を含むinput.txtファイルでこのスクリプトを使用しています。

それでは、abcフォルダ内のすべてのフォルダを一度に編集してみましょう。私は次のようなものを試しました。

find /home/student/eny/abc -exec lynx.sh {} \;
find /home/student/eny/abc/* -iname -exec ./lynx.sh input.txt {} \;

そして他の多くの人々。解決策が見つかりません。

存在する入力.txtたとえば、次のウェブサイト名があります。kosice.sk bratislava.sk presov.skサイトの各名前は、aplhabetの順序でラップされて配置されます。また、最初のレベルのディレクトリの名前としても使用されます。

答え1

これがコマンドの最終バージョンです。

find /home/student/eny/abc -type f -exec ./lynx.sh {} \;

指示:

  1. -type fファイルのみ検索
  2. 現在のディレクトリを表すには、スクリプトパス./(ドットスラッシュ)を指定する必要があります。フルパスを指定する必要があります。
  3. lynx.shの実行ビットはファイルモード0755に設定する必要があります。

関連情報