打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
linux获取文件的路径名及其文件名的方法

linux获取文件的路径名及其文件名的方法

分类: linux 1330人阅读 评论(2) 收藏 举报

1、简单测试实例

 for i in `find . -type f -name "*.c"`
do
  echo $i
  basename $i    获取*.c文件名
  dirname $i        获取*.c对应的目录名
done


2、实际应用

diff Linux源码,并将有不一样的源码整理在一起,要求:文件名以new和old区分。

(1)、简单测试


rm -rf ~/Desktop/20091107

cp_source()
{
#for i in `find . -type d -print`
for i in `find $1 -type f -name "*.s"`
do
  #echo $i
  #basename $i
  dirname $i

  mkdir -p ~/Desktop/20091107/`dirname $i`
  cp $i ~/Desktop/20091107/`dirname $i`/`basename $i`_"$2"
done
}

cd linux-0.11 && cp_source "." "new"
cd ../linux-0.11 && cp_source "." "old"

 

(2)、实际实现(以diff -Nur linux-2.6.30 linux-2.6.31.5为例)

 

rm -rf ~/Desktop/20091107

#cat linux-patch.txt | grep 'diff -Nur ' | sed 's/^.*linux-2.6.30////g'| sed 's/ linux-2.6.31.5.*$//g' > ~/Desktop/diff.txt

old_source_noprefix=`cat linux-patch.txt | grep 'diff -Nur ' | sed 's/^.*linux-2.6.30////g'| sed 's/ linux-2.6.31.5.*$//g'`
new_source_noprefix=`cat linux-patch.txt | grep 'diff -Nur ' | sed 's/^.*linux-2.6.31.5////g'`

old_source_haveprefix=`cat linux-patch.txt | grep 'diff -Nur ' | sed 's/^.*linux-2.6.30/linux-2.6.30/g'| sed 's/ linux-2.6.31.5.*$//g'`
new_source_haveprefix=`cat linux-patch.txt | grep 'diff -Nur ' | sed 's/^.*linux-2.6.31.5/linux-2.6.31.5/g'`

cp_source()
{
#for i in `find . -type d -print`
for i in $1
do
  #echo $i

  #basename $i
  #dirname $i
 
  #Used "diff -Nur", some file didn't exist!
  mkdir -p ~/Desktop/20091107/`dirname $i` && cp ./$2/$i ~/Desktop/20091107/`dirname $i`/`basename $i`_"$3" 2>/dev/null
done
}

cp_source "$old_source_noprefix" "linux-2.6.30" "old"
cp_source "$new_source_noprefix" "linux-2.6.31.5" "new"

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
每一个程序员需要了解的10个Linux命令
SourceInsight 精确导入Linux kernel源码的方法
linux下删除空行的几种方法
PHP文件操作
PHP中的文件系统函数(一)
永恒之戒
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服