如何查找文件并对其进行操作(查找 + 执行)

如何查找文件并对其进行操作(查找 + 执行)

我已经下载了大约 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 文件夹中的所有文件夹。我尝试过像这样使用 somtehing:

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

以及许多其他人。我找不到解决方案。

输入.txt有网站名称,例如:kosice.sk 布拉迪斯拉发.sk 普雷绍夫.sk该站点的每个名称都换行,并且按 aplhabet 顺序排列。它们也作为第一级目录的名称。

答案1

这是命令的最终版本

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

注意事项:

  1. -type f仅查找文件
  2. 您应该指定脚本的路径./(点斜杠)表示当前目录,您可能需要指定完整路径
  3. lynx.sh 应该有可执行位设置文件模式 0755 就可以了

相关内容