【发布时间】:2016-02-12 17:53:10
【问题描述】:
我已经下载了大约 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 文件夹中的所有文件夹。我试过像这样使用somtehin:
find /home/student/eny/abc -exec lynx.sh {} \;
find /home/student/eny/abc/* -iname -exec ./lynx.sh input.txt {} \;
还有很多其他的。我找不到解决办法。
【问题讨论】:
-
有什么问题?您收到错误消息了吗?
-
不,但它只影响第一层。我需要编辑所有文件夹和所有文件,它所做的只是它只影响第一个文件夹而不影响它的文件夹(例如,文件夹“abc”包含许多包含其他文件夹但也包含一些文件的文件夹。它所做的只是它只影响 abc 中的文件,而不影响文件夹)@JohnKugelman
标签: unix recursion path find exec