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

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.30g'| 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.30g'| sed 's/ linux-2.6.31.5.*$//g'`

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

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"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值