当前位置: 首页 > news >正文

Bash:如何循环含有空格的文件名或文件中的行?

2012-10-12日更新此博客,增加对含有空格的行的遍历。

1. 可以使用while readi 

cat d.txt | while read i;do echo $i; done
while read i; do echo $i; done < d.txt

 

2. 文件遍历:

一个目录下如果有含有空格或者其他特殊字符的文件,如何在bash中循环他们呢?我们知道在bash的循环中,是使用空格作为元素的分界符的,即便 文件加上引号,依旧不能正确指定完整的文件为元素(如果文件名含有空格的话).

例如:

#如果文件含有空格,则会根据空格把文件名拆分!
for file in $(ls -Q ./src/); do echo $file; done

即便把文件名作为脚本的参数,然后在参数名上加上引号,也不能成功,例如:

#Script Name: mysccript
#在脚本后加上文件名,并以引号括起来
for file in $@; do echo $file; done

执行:
./myscript "fname 1" "fname 2"
结果:
fname
1
fname
2

 

这里我们使用一种方法: for file in ../*; do echo $file; done,

3. 即在in中直接指定路目地址并加上星号指定所有的文件.或者利用通配符指定一系列文件例如:fname*.例如:

for file in ./fname*; do echo $file; done

4. ./*不能够遍历到隐性文件,如果只要遍历隐性文件则使用 ./.* 。如果要遍历到所有的文件(包括隐性文件),则要借助ls -A 和 while read。

[root@localhost ~]# for i in ./.*;do echo $i;done
./.
./..
./.bash_history
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.dbshell
./.lesshst
./.mongorc.js
./.tcshrc
./.viminfo
[root@localhost ~]# ls -A ./|while read i;do echo $i;done
a b
anaconda-ks.cfg
.bash_history
.bash_logout
.bash_profile
.bashrc
.cshrc
.dbshell
grub.conf
install.log
install.log.syslog
.lesshst
.mongorc.js
nohup.out
Python2.7
Python-2.7.3
Python-2.7.3.tar.bz2.tar.bz2.tar.bz2
scripts
sedlfz71t
.tcshrc
test
test2
.viminfo

 

 

转载于:https://www.cnblogs.com/nathaninchina/archive/2012/09/03/shell_loop_spaces_within_fname.html

相关文章:

  • 我的2017,我的认证之路
  • 安装 archlinux 之在 BIOS/MBR 基本安装
  • gevent爬取豆瓣电影top250
  • 如何使用js判断浏览器内核然后引用不同的css外联样式
  • c++ DLL和c#之间传递字符串
  • HTML总结2
  • 进行移动电子邮件营销转化率的三个秘诀
  • background-position
  • ROS中测试机器人里程计信息
  • 基于phpExcel写的excel类,供平时方便使用
  • IaaS PaaS SaaS Daas
  • Java8 Arrays.sort VS Arrays.parallelSort应用实例源码教程
  • Facebook iOS 新版开发手记:两倍速度的背后(转)(参考)
  • Azure ARM创建和部署自定义操作系统映像
  • 维基百科新增电子书导出功能,方便离线阅读
  • 07.Android之多媒体问题
  • Apache的基本使用
  • AWS实战 - 利用IAM对S3做访问控制
  • C语言笔记(第一章:C语言编程)
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • leetcode46 Permutation 排列组合
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • OSS Web直传 (文件图片)
  • sublime配置文件
  • 精彩代码 vue.js
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 时间复杂度与空间复杂度分析
  • 通过几道题目学习二叉搜索树
  • 王永庆:技术创新改变教育未来
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 阿里云重庆大学大数据训练营落地分享
  • 移动端高清、多屏适配方案
  • #android不同版本废弃api,新api。
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (vue)页面文件上传获取:action地址
  • (二)构建dubbo分布式平台-平台功能导图
  • (力扣)循环队列的实现与详解(C语言)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • .form文件_SSM框架文件上传篇
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET 表达式计算:Expression Evaluator
  • .net反混淆脱壳工具de4dot的使用
  • .NET运行机制
  • .project文件
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [20150707]外部表与rowid.txt
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [COI2007] Sabor
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • [git] windows系统安装git教程和配置
  • [GN] Vue3.2 快速上手 ---- 核心语法2