シェルはテキストを作成し、ファイルの名前を変更し、エンコード形式をバッチ変換し、マークダウンにリダイレクトします

1.作成するテキストコンテンツ:

b.txt.bak

cat /root/shellDir/program/sedTest/testFile/b.txt.bak
Linux系统发送告警脚本【www.vipsrc.com】.sh
MySQL数据库备份多循环【www.vipsrc.com】.sh
nginx 访问访问日志按天切割【www.vipsrc.com】.sh

2.テキストコンテンツに基づいて対応するファイルを作成します。

touchFile.sh.bak

cat touchFile.sh.bak

#!/bin/bash
currPathFile=/root/shellDir/program/sedTest/testFile/b.txt.bak
IFS=$'\n'

for i in `cat $currPathFile`
do
        touch $i
done

実行後の効果:
ここに画像の説明を挿入

3.ファイルの名前を変更します(次のWebサイト名を削除します)

rename.sh.bak

cat rename.sh.bak

#!/bin/bash
IFS=$'\n'

pwd=/root/shellDir/program/sedTest/testFile
#oraginalName=($(ls $pwd *.sh)) 原先这里是这样写的,发现这种写法会产生多种数据,它显示通配符的数据和绝对路径的所有文件,很J2怪。
oraginalName=($(ls $pwd | ls *.sh))
changeName=($(ls $pwd | awk -F '【' '/sh$/{print $1 ".sh"}'))

count=1
for (( i = 0; i < ${#oraginalName[@]}; ++i ));
do
        count=1
        for (( j = 0; j < ${#oraginalName[@]}; ++j ));
        do
                if [ $count==$i  ];then
                        # echo " ${oraginalName[i]} ---> ${changeName[i]}";
                       #mv  ${oraginalName[i]} ${changeName[i]}
                       mv  "$pwd/${oraginalName[i]}" "$pwd/${changeName[i]}"

                        break
                fi
        done
        let count++
done

実行効果:
ここに画像の説明を挿入

2021年1月14日15:49:28 时隔几个月,然后发现 rename更好用。。。 执行下面操作即可,上面的代码就当锻炼一点逻辑思维了
rename "【www.vipsrc.com】" "" *.sh

4.エンコード形式のバッチ変換

convertFile.sh.bak

cat convertFile.sh.bak

#!/bin/bash
### 将 values_here 替换为输入编码
FROM_ENCODING="iso-8859-1"
### 输出编码 (UTF-8)
TO_ENCODING="UTF-8"
### 转换命令
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING"
### 使用循环转换多个文件
for  file  in  *.converted; do
$CONVERT   "$file"   -o  "${file%.sh}.gbk.converted"
done
exit 0

fileコマンドは、ファイルのエンコード形式を表示できます

ls *.sh | xargs -I {
    
    } file {
    
    }file -i *.sh

リファレンスブログ:https://linux.cn/article-7959-1.html

実行効果:変換

ここに画像の説明を挿入
変換
ここに画像の説明を挿入
しかし、変換後も文字化けしているので大変迷惑です。winでの表示は正常で、UTF-8に変換され、Linuxで実行すると文字化けします。echo $ LANG ------> en_US.UTF-8
(グループが言ったことと同じだと推定されます:Windowsではテキストを編集してコピーし、Linuxではvim、右クリックして貼り付けます)
何か良いものがあれば方法については、一緒に話し合ってください。

5.マークダウンにリダイレクトする

スクリプトの内容:
appendFile.sh.bak

#!/bin/bash
IFS=$'\n'

pwd=/drives/e/jpg/test/convert
fileName=($(ls $pwd| ls  *.sh))

for (( i = 0; i < ${#fileName[@]}; ++i ));
do
cat >> $pwd/test.md <<EOF
\`\`\`bash
# ${
      
      fileName[i]}
`cat ${fileName[i]}`
\`\`\`


EOF
	
done

上記のスクリプトで発生した
落とし穴1。猫のマークダウン形式 `numberはエスケープする必要があります。エスケープしないと、スタックしたままになります。ctrl+ cが終了すると、端末は直接切断され、再接続が必要になります。
2.猫のリダイレクトの最後のEOFを一番上のグリッドに書き込む必要があります。そうしないと、説明できないエラーが報告されます。
ここに画像の説明を挿入
実行後の効果:(ただし、コンテンツが文字化けしています。より良い解決策がある場合は、議論して議論することを歓迎します)
すべての* .shコンテンツをマークダウン形式に追加します
ここに画像の説明を挿入

この記事はもうすぐ終わります。上記の多くの操作を行う目的は、以前に学んだシェルスクリプトの理解とコメントをコメントアウトすることです。メモを取ります。といった:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Nightwish5/article/details/109332594