Shell-3-文件之名

1.生成任意大小的文件

[[email protected] tmp]# dd if=/dev/zero of=junk.data bs=1M count=1

记录了1+0 的读入

记录了1+0 的写出

1048576字节(1.0 MB)已复制,0.00219263 秒,478 MB/秒

if代表输入文件,of代表输出文件,bs大小,count表示块数

[[email protected] tmp]# dd if=/dev/zero of=junk.data bs=1M count=2

记录了2+0 的读入

记录了2+0 的写出

2097152字节(2.1 MB)已复制,0.00375177 秒,559 MB/秒


单元大小


代码


字节(1B)


c


字(2B)


w


块(512B)


b


千字节(1024B)


k


兆字节(1024kb)


M


吉字节(1024MB)


G

2.文本文件的交集与差集(comm)

交集:打印出两个文件所共有的行。

求差:打印出指定文件所包含的且互不相同的那些行。

差集:打印出包含在文件A中,但不包含在其他指定文件中的那些行。

[[email protected] tmp]# cat A.txt
apple
orange
gold
silver
steel
iron
[[email protected] tmp]# cat B.txt
orange
gold
cookies
carrot
[[email protected] tmp]# sort A.txt -o A.txt ;sort B.txt -o B.txt
[[email protected] tmp]# comm A.txt B.txt 

apple
    carrot
    cookies
        gold
iron
        orange
silver
steel
为了打印交集,删除第1,2列:
[[email protected] tmp]# comm A.txt B.txt -1 -2
gold
orange

3.创建不可修改的文件

chattr +i file
chattr -i file

[[email protected] tmp]# for name in {1..100}.txt
> do
> touch $name
> done

4.使用回环文件

(1)创建一个1G大小的文件

[[email protected] tmp]# dd if=/dev/zero of=looback.img bs=1G count=1

(2)用mkfs命令将1G文件格式化成ext4文件系统

[[email protected] tmp]# mkfs.ext4 looback.img 

(3)使用下列命令检查文件系统

file loobackuo.img

(4)现在可以挂载环回文件

[[email protected] tmp]# mkdir /mnt/looback
[[email protected] tmp]# mount -o loop looback.img /mnt/looback/

(5)使用下面方法卸载(umount)

umount /mnt/looback

5.查找文件差异并进行修补(diff)

[[email protected] tmp]# cat 1.txt
this is a test1
11
22
33
44
55
[[email protected] tmp]# cat 2.txt
this is a test2
11
44
33
55
55
[[email protected] tmp]# diff 1.txt 2.txt
1c1
< this is a test1
---
> this is a test2
3,4d2
< 22
< 33
5a4,5
> 33
> 55
[[email protected] tmp]# diff -u 1.txt 2.txt
--- 1.txt    2017-06-11 14:51:18.763717808 +0800
+++ 2.txt    2017-06-11 14:51:47.477782113 +0800
@@ -1,6 +1,6 @@
-this is a test1
+this is a test2
 11
-22
-33
 44
+33
+55
 55

(2)用下列命令来修补

diff -u 1.txt 2.txt >3.txt
patch -p1 1.txt <3.txt
[[email protected] tmp]# cat 1.txt(和2.txt一模一样)
this is a test2
11
44
33
55
55

(3)下列命令撤销做出的修改

patch -p1 1.txt <version.patch

6.只列出目录的各种办法

(1)ls -d */

(2)ls -F |grep “/$”

(3)ls -l |grep “^d”

(4)find . -type d -maxdepth 1

7.统计文件的行数、单词数和字符数

wc命令(word count单词统计)

(1)统计行数

wc -l file

(2)统计单词数

wc -w file

(3)统计字符数

wc -c file

(4)当wc不使用任何参数时,分别打印出行数,单词数,字符数。

时间: 2024-11-09 18:49:06

Shell-3-文件之名的相关文章

shell提取文件后缀名,并判断其是否为特定字符串

如果文件是 .css文件 或 .js文件,则进行处理. file=$1 if [ "${file##*.}"x = "css"x ]||[ "${file##*.}"x = "js"x ];then do something fi 注意: 1> 提取文件后缀名: ${file##*.} ##是贪婪操作符,从左至右匹配,匹配到最右边的.号,移除包含.号的左边内容. 这里可以参考 http://www.1987.name/2

Bash Shell 解析路径获取文件名称和文件夹名

前言 还是今天再写一个自己主动化打包脚本.用到了从路径名中获取最后的文件名称.这里记录一下实现过程. 当然,最后我也会给出官方的做法.(ps:非常囧,实现完了才发现原来Bash Shell有现成的函数) 获取文件名称 如果给定的路径名为: /tmp/csdn/zhengyi/test/zhengyi.txt awk解法 用"/"做分隔符,然后打印出最后的那一部分. 实现代码例如以下: resFile=`echo /tmp/csdn/zhengyi/test/adb.log | awk

shell练习题:使用for循环批量修改文件扩展名

shell练习题:使用for循环批量修改文件扩展名 说明:(1)在linux下批量修改文件名,将下图所示命令中的"_linux"去掉. (2)使用for循环脚本. 思路:本题的基本解题思路,先进行单个文件的改名,然后再用循环实现批量改名,这是比较常规的做法,也可以用rename专业改名工具. 方法一: 说明:使用cut.sed工具 脚本如下: #!/bin/bash cd /test for i in `ls|grep .*.jpg` do mv $i `echo $i |cut -d

学习记录004-目录与文件扩展名

一.目录1.系统日志文件的存放处/var/log/messages,里面的信息自动轮询,经常看这个文件,系统有问题,先看这个文件2.var/log/secure //记录登录的信息按周轮询3.var/log/wtmp //记录last的信息 输入last显示登录账户的信息 或者w who lastlog4.var/spool/cron/root //定时任务 crontab -l 一样的效果5.var/spool/clientmqueue //sendmail 临时邮件的文件目录 有时候会导致i

linux环境: shell初始化文件, for TCSH, CSH

TCSHELL, CSHELL 配置文件 全局配置文件 /etc/csh.cshrc个人配置文件 ~/.cshrc或~/.tcshrc 参考: 1.配置你的csh/tcsh,  https://wiki.freebsdchina.org/howto/c/config_your_csh 2.我的.cshrc常用设置 http://biancheng.dnbcw.info/bsd/260256.html 我使用csh,喜欢在.cshrc 中添加如下的内容:#给ls增加眼色,给目录名后面加上 '/'a

linux文件扩展名和类型

windows是通过扩展名区分文件类型的 Linux中文件扩展名根文件类型没有关系 为了容易区分和兼容用户使用windows的习惯,我们也会用扩展名来表示Linux中的文件类型! linux中一切皆文件.文件类型包含:普通文件,目录,字符设备,块设备,符号链接等 [[email protected] ~]# ls -l 总用量 132 -rw-r--r--. 1 root root     2 11月  8 14:25 a.log -rw-------. 1 root root  1587 10

08-Linux基础入门(六)-文件和目录的属性及权限之文件类型、文件扩展名及文件权限基础

一.Linux中的文件类型在Linux系统中,可以说一切(包括目录.普通文件.设备文件等)皆为文件.文件类型包含有普通文件.目录.字符设备文件.设备文件.符号链接文件.管道文件等等,当执行ls -l 或ls - al命令后可显示当前目录下的所有文件及文件夹: [[email protected] ~]# ls -l 总用量 40 -rw-------. 1 root root 1140 2月 5 04:28 anaconda-ks.cfg -rw-r--r--. 1 root root 2173

shell 实现文件改名

修改文件名可以有不同的命令方式,比如rename, mv都可以实现 对于单个的文件,可以直接使用以上的命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢? 比如某次测试后,保存的文件为 Lan1.txt, Lan2.txt,....Lan100.txt 这一百个文件需要在前面添加前缀变成类似 ch7_Lan1.txt,如果你还想使用mv来一个一个...多痛苦啊 当前文件夹下,文件修改有4种方式 1. 使用while Loop加 ${//}来实现Lan到 ch7_Lan的替换 点击

如何将应用程序与文件类型(文件扩展名)关联起来?

自定义一个文件格式,如 .jgrass ,如何将这种文件格式与对应的程序关联起来? 或者,自己编写了一个可以打开 txt 格式的应用程序,怎么能够通过双击 txt 文件,直接打开这个自定义程序? 基本思路是向注册表中写入或修改一些值. 具体可以参见: 如何为你的 Windows 应用程序关联一种或多种文件类型 - walterlv 注册表中的文件扩展名 注册表中的关联程序 举个栗子 e.g. 怎么修改 txt 文件的默认打开格式? 理论上讲,有两种实现方式. 1 修改上图 1 中的 .txt 项

js 上传文件后缀名的判断 var flag=false;应用

js 上传文件后缀名的判断  var flag=false;应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &