- 文件列表
作为一个码农,经常需要看内核代码。内核代码万万,笔者需要生成一个实际使用编译的文件列表。下面是生成的脚本。
简单版
#!/bin/bash
cat /dev/null > /dev/shm/kernel.files
for file in $(find -L src -type f -regex '.*\.o')
do
[ -f ${file%.o}.c ] && echo ${file%.o}.c >> /dev/shm/kernel.files
[ -f ${file%.o}.h ] && echo ${file%.o}.h >> /dev/shm/kernel.files
done
[ -f /dev/shm/kernel.files ] && cp /dev/shm/kernel.files kernel.files
增强版
#!/bin/bash
add_files()
{
for file in $@
do
[ -f $file ] && echo $file >> /dev/shm/kernel.files
done
}
add_dirs()
{
for dir in $@
do
for file in $(find -L $dir -type f -regex '.*\.[ch]')
do
[ -e ${file} ] && echo ${file} >> /dev/shm/kernel.files
done
done
}
IGNORE_DIR="-path obj/source/oe-workdir"
# IGNORE_DIR+="-o -path $your_dir_want_to_ignore"
cat /dev/null > /dev/shm/kernel.files
## Please add extern files here.
# add_files your_files
## Please add extern files here.
add_dirs obj/arch/arm/include/generated \
obj/include/generated \
obj/include/config/snd
for file in $(find -L obj \( ${IGNORE_DIR} \) -prune -o -type f -regex '.*\.o')
do
tmp=src${file#obj}
[ -f ${tmp%.o}.c ] && echo ${tmp%.o}.c >> /dev/shm/kernel.files
[ -f ${tmp%.o}.h ] && echo ${tmp%.o}.h >> /dev/shm/kernel.files
done
[ -f /dev/shm/kernel.files ] && cp /dev/shm/kernel.files kernel.files
在文件列表的基础上,增加字符串查找。
#!/bin/bash
for file in $(cat kernel.files)
do
[ -f ${file} ] && (
info=$(grep -rn "${1}" ${file})
[ -n "$info" ] && echo -E "${file} $info"
)
done
本文介绍了一种用于生成内核代码文件列表的脚本,包括简单版和增强版,提供了字符串查找功能,帮助开发者快速定位所需文件。

5271

被折叠的 条评论
为什么被折叠?



