파일을 찾아 조치를 취하는 방법(찾기 + 실행)

파일을 찾아 조치를 취하는 방법(찾기 + 실행)

저는 약 3200개의 웹사이트를 심도 2로 다운로드했습니다. 이제 각 웹사이트의 파일이 포함된 많은 폴더가 포함된 기본 폴더(abc)가 생겼습니다. 따라서 내 폴더 abc에는 3200개의 폴더가 포함되어 있으며 각 폴더에는 웹 사이트 텍스트가 있는 파일이 포함된 다른 폴더가 포함되어 있습니다. 또한 각 파일의 텍스트를 편집하는 스크립트도 있습니다. 이는 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로 설정되어야 합니다.

관련 정보