Shell脚本 | 数据处理相关常用命令

时间:2025-04-08 17:14:20

常用命令

  • 写入文件路径到lst
  • 提取绝对路径中的文件名/文件名片段
  • 两种循环
    • for循环
    • while循环

写入文件路径到lst

  • 写入当前文件夹下文件的绝对路径:ls | sed.
// 写入当前文件夹下全部文件绝对路径
ls | sed "s:^:`pwd`/:" > all_file.lst
// 写入当前文件夹下第一个文件绝对路径
ls | sed "s:^:`pwd`/:" head -n 1 > first_file.lst

  • 1
  • 2
  • 3
  • 4
  • 5
  • 写入指定文件夹下特定后缀文件的绝对路径: ls.
ls -R $dir/*.txt > 
  • 1
  • 写入指定文件夹(dir)下所有名称含字符串string的txt文件绝对路径: find | grep.
find $dir/ -name "*.txt" | grep string >> 
  • 1

提取绝对路径中的文件名/文件名片段

  • 提取路径中最后一个片段(文件名): awk.
// 每行格式如下,dir和文本由/t隔开
// /.../.../filename	text
file=`echo $line | awk -F '/t' '{print $1}' | awk -F '/' '{print $NF}'`
  • 1
  • 2
  • 3
  • 去除文件名的后缀
filename=`echo ${file%.*}`
  • 1

两种循环

for循环

  • 从文件读入内容+追加写入lst: cat.
for line in `cat `
{
	name=`echo $line | awk -F '/' '{print $NF}'`
	echo $name >> 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 使用i生成当前目录下的文件夹名(0001-0022)进行遍历+寻找含某字符串的名字+追加写入lst
for ((f=1;f<=22;f++))
do
	foldernum=`printf %04d $f`
	echo $foldernum
	find $PWD/$foldernum/ -name "*.txt" | grep string >> 
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

while循环

  • 从文件读入+追加写入lst
while read line;
do
	text=`head -n 1 $line`
	file=`echo $line | awk -F '/' '{print $NF}'`
	newline="$file $text"
	echo $newline >> 
done < 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7