Common

1. 将当前文件夹所有pdf文件转成txt文件

#!/usr/bin/env bash

# 遍历当前文件夹中的所有文件
for file in *.pdf; do
  # 使用 pdftotext 将 PDF 转换为文本
  pdftotext "$file" "${file%.pdf}.txt"
  echo "Convert $file to ${file%.pdf}.txt"
done

echo "Conversion complete."

或者

find . -maxdepth 1 -name "*.pdf" -print0 | xargs -0 -n 1 pdftotext

2. 将myprogram放到后台运行,标准输出和错误重定向到logfile,退出bash保持运行

nohup myprogram &> logfile &

或者

nohup myprogram > logfile 2>&1 &

3. 发送Ctrl+C信号给后台运行的myprogram

先用 ps aux | grep myprogram 找出myprogram的PID,再用 kill 命令发出信号.

kill -SIGINT <PID>

4. 使用sed替换文本文件

假设有一个 files.txt 文件包含了当前文件夹中需要移动位置的文件,现在需要生成一个 move_files.sh 文件,包含很多移动命令(类似 mv /home/user/demo1.txt /tmp/somewhere/

使用下面的sed命令会对 files.txt 每一行进行替换,并将结果输出到终端。 ^ 表示从头匹配, $ 表示从结尾匹配

sed "s|^|mv /home/user/|; s|$| /tmp/somewhere/|" files.txt