查找文件并对其执行操作 (find + exec)
find files and act on them (find + exec)
我已经下载了大约 3200 个网站到深度 2。所以现在我有一个包含许多文件夹的主文件夹 (abc),包含每个网站的文件。所以我的文件夹 abc 包含 3200 个文件夹,每个文件夹包含其他文件夹,其中包含来自网站的文本文件。
我还有一个脚本可以编辑每个文件中的文本。它存储在名为 lynx.sh:
的文件中
#!/bin/bash
fileA=
while IFS= read -r lineA
do
LTRA=$(echo "${lineA:0:1}")
catA=$(lynx -dump -nonumbers -nomargins -nolist -noprint -width 1000 -assume_charset=utf-8 /*.* )
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" > /"blaaa"_lynx.txt
echo "$lineA"
done <"$fileA"
它使每个文件中的文本都可以被编辑——每个词都在新行上。我以前多次使用过这个脚本,但我将它与文件 input.txt 一起使用,其中包含我拥有的所有网站的名称。
现在我想一次编辑我的 abc 文件夹中的所有文件夹。我试过像这样使用 somtehing:
find /home/student/eny/abc -exec lynx.sh {} \;
find /home/student/eny/abc/* -iname -exec ./lynx.sh input.txt {} \;
和许多其他人。我找不到解决方案。
我在寻找“-type f”
find /home/student/eny/abc -type f -exec ./lynx.sh {} \;
我已经下载了大约 3200 个网站到深度 2。所以现在我有一个包含许多文件夹的主文件夹 (abc),包含每个网站的文件。所以我的文件夹 abc 包含 3200 个文件夹,每个文件夹包含其他文件夹,其中包含来自网站的文本文件。 我还有一个脚本可以编辑每个文件中的文本。它存储在名为 lynx.sh:
的文件中#!/bin/bash
fileA=
while IFS= read -r lineA
do
LTRA=$(echo "${lineA:0:1}")
catA=$(lynx -dump -nonumbers -nomargins -nolist -noprint -width 1000 -assume_charset=utf-8 /*.* )
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" > /"blaaa"_lynx.txt
echo "$lineA"
done <"$fileA"
它使每个文件中的文本都可以被编辑——每个词都在新行上。我以前多次使用过这个脚本,但我将它与文件 input.txt 一起使用,其中包含我拥有的所有网站的名称。
现在我想一次编辑我的 abc 文件夹中的所有文件夹。我试过像这样使用 somtehing:
find /home/student/eny/abc -exec lynx.sh {} \;
find /home/student/eny/abc/* -iname -exec ./lynx.sh input.txt {} \;
和许多其他人。我找不到解决方案。
我在寻找“-type f”
find /home/student/eny/abc -type f -exec ./lynx.sh {} \;