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コンテンツをマークダウン形式に追加します
この記事はもうすぐ終わります。上記の多くの操作を行う目的は、以前に学んだシェルスクリプトの理解とコメントをコメントアウトすることです。メモを取ります。といった: