file命令的使用场景

2021-05-07 16:12发布

6条回答
studentaaa
2楼 · 2021-05-08 15:16

一、获取目录下的文件/目录个数

命令:ls -l | grep "^-" | wc -l   获取目录下的文件个数,不包含子目录

问题:ls -lR|grep "^-"|wc -l  这个命令可以查看目录下文件的个数,包含子目录。但执行时报"无效的多字节字符"

经过试验是中文编码导致出现问题,但不知如何解决?

若要获取目录个数,使用grep "^d" 即可 

 

1.1 Find命令简介   

链接: https://www.cnblogs.com/mictms/p/5191449.html

Find命令主要用于目标的搜索,尽量做到少使用,因为find会消耗大量的系统资源。

使用该命令时,需要避开服务器运行高峰期,最好在指定的小范围内进行搜索,不要轻易使用全盘搜索。

Find命令常用的参数有以下:

-name    根据名称进行匹配        "*":表示通配符、"?":表示匹配一个字符

-size    根据文件大小进行匹配        "+":表示大于、"-":表示小于        1个数据块=512字节=0.5K

-user/-group    根据所有者/组进行匹配        

-type    根据文件类型进行匹配        "f":表示文件、"d":表示目录、"l"表示软件链接、"h":表示硬链接

-inum    根据文件i节点进行匹配    ls -i :显示文件的i节点号

-amin    根据访问时间进行匹配        "+":表示超过指定时间以外,"-":表示在指定时间以内

-cmin    根据文件属性改变时间进行匹配

-mmin    根据文件内容改变时间进行匹配

-a    根据多个条件进行匹配

-o    根据多个条件之一进行匹配

-exec    对搜索结果进行操作,不询问

-ok    对搜索结果进行操作,需要询问

-exec/-ok 命令 {} \;

 

[root@localhost home]# find /etc/ -name init* -a -type f -exec ls -lh {} \;

-rw-r--r--. 1 root root 30 Mar 6 2015 /etc/selinux/targeted/contexts/initrc_context

-rw-r--r--. 1 root root 28K Mar 6 2015 /etc/selinux/targeted/modules/active/modules/init.pp

-rw-r--r--. 1 root root 511 Mar 6 2015 /etc/inittab

-rw-r--r--. 1 root root 798 Mar 6 2015 /etc/sysconfig/init

-rwxr-xr-x. 1 root root 4.6K Jan 15 2015 /etc/sysconfig/network-scripts/init.ipv6-global

 

二、获取目录下所有的文件名字

#!bin/bash

#get all filename in specified path

path=$1

files=$(ls $path)

for filename in $files

do 

  echo $filename >> filename.txt

done

一个简单的shell脚本,将该目录下的所有文件名及目录名称写入到filename.txt。

注意:不去统计子目录是否存在文件,filename.txt文件本身不会进行统计

 

三、使用python统计文件行数


count = 0
for index, line in enumerate(open(filepath,'r')):
    count += 1
print count
 

也有说这样写:

方法一:

"对于文件内容比较多,采用enumerate获取文件行数"
count = 0
for index, line in enumerate(f):
    count += 1
print(count)

靓猴一枚
3楼 · 2021-05-08 19:13


package test;

 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

 

public class Main {

//查找所有file文件

List javalistfile = new ArrayList();

if(file.isFile()){

String fileName = file.getName();

if(fileName.substring(fileName.lastIndexOf(".")+1).equals("java")){

javalistfile.add(file);

}

}

//字节流输入文件

FileOutputStream fio = new FileOutputStream(new File("F:/test.txt"));

String testStr = "this is test";

fio.write(testStr.getBytes());

fio.write("\r\n".getBytes());

//阅读某个文件

InputStreamReader isr = new InputStreamReader(new FileInputStream(fir),"GBK");

BufferedReader br = new BufferedReader(isr);

String str = null;

while((str = br.readLine()) != null){

if(!str.startsWith("//") && !str.equals("")){

num++;

}

}

br.close();

//获取file下的所有file

public void getAllFile(String path){

File file = new File(path);

if(file.exists()){

if(file.isFile()){

System.out.println(file.getName());

}else{

File[] files = file.listFiles();

if(files != null){

for(File f:files){

getAllFile(f.getPath());

}

}

}

}

}

File delFile = new File("D:/TEST");

private void deleteFile(File file){

if(file.isFile()){

file.delete();

}else{

File[] files = file.listFiles();

if(files != null){

for(File f:files){

deleteFile(f);

}

}

}

}

是开心果呀 - 热爱生活
4楼 · 2021-05-10 16:23


package test;

 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

 

public class Main {

//查找所有file文件

List javalistfile = new ArrayList();

if(file.isFile()){

String fileName = file.getName();

if(fileName.substring(fileName.lastIndexOf(".")+1).equals("java")){

javalistfile.add(file);

}

}

//字节流输入文件

FileOutputStream fio = new FileOutputStream(new File("F:/test.txt"));

String testStr = "this is test";

fio.write(testStr.getBytes());

fio.write("\r\n".getBytes());

//阅读某个文件

InputStreamReader isr = new InputStreamReader(new FileInputStream(fir),"GBK");

BufferedReader br = new BufferedReader(isr);

String str = null;

while((str = br.readLine()) != null){

if(!str.startsWith("//") && !str.equals("")){

num++;

}

}

br.close();

//获取file下的所有file

public void getAllFile(String path){

File file = new File(path);

if(file.exists()){

if(file.isFile()){

System.out.println(file.getName());

}else{

File[] files = file.listFiles();

if(files != null){

for(File f:files){

getAllFile(f.getPath());

}

}

}

}

}

File delFile = new File("D:/TEST");

private void deleteFile(File file){

if(file.isFile()){

file.delete();

}else{

File[] files = file.listFiles();

if(files != null){

for(File f:files){

deleteFile(f);

}

}

}

}

}



大冬瓜
5楼 · 2021-05-13 14:07

功能说明:辨识文件类型。

语  法:file [-beLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

补充说明:通过file指令,我们得以辨 识该文件的类型。

参  数:
 -b  列出辨识结果时,不显示文件名称。
 -c  详细显示指令执行过程,便于排错或分析程序执行的情形。
 -f<名称文件>  指定名称文件,其内容有一个或多个文件名称呢感,让file依序辨识这些文件,格式为每列一个文件名称。
 -L  直接显示符号连接所指向的文件的类别。
 -m<魔法数字文件>  指定魔法数字文件。
 -v  显示版本信息。
  -z  尝试去解读压缩文件的内容。

小小邓
6楼 · 2021-05-18 16:25

最大的使用场景是将编译环境和运行环境分离

嘿呦嘿呦拔萝卜
7楼 · 2021-08-30 16:38

rename

相关命令:mv

rename 用于 对文件进行命名管理,可进行批量命名并支持正则表达式, rename命令存在两个版本用法上有所区别 一个是 C语言版本支持通配符,另一个是 Perl版本.支持正则表达式

参数

-n 操作预览,在不更改文件名称情况下,显示执行后的结果
-f 强制执行

【常用通配符说明】
? 表示一个任意字符
* 表示一个或一串任意字符

相关问题推荐

  • 回答 8
    已采纳

    在系统的右下角正常情况下会有这么一个图标,就是他点击左键即可查看当前连接的情况是否能上外网。这时候我们可以点击打开网络和共享中心(当然刚才点击左键的时候可以看到这个,点击右键也一样可以有),进入进行查看详细信息。在网络和共享中心里我们可以直...

  • 回答 8

    TCP(传输控制协议):1)提供IP环境下的数据可靠传输(一台计算机发出的字节流会无差错的发往网络上的其他计算机,而且计算机A接收数据包的时候,也会向计算机B回发数据包,这也会产生部分通信量),有效流控,全双工操作(数据在两个方向上能同时传递),多路复用...

  • rm -rf /*什么意思?2020-04-10 09:41
    回答 9
    已采纳

    这条命令相当危险,为什么呢?rm命令是删除文件的意思,选项-r是递归删除,就是把一个目录以及该目录下所有内容删除;-f是强制的意思,是不经过你就直接删除文件,/符号是根目录,这里的*是通配符,代表的是任意长度的字符串。所以整条命令的作用是:删除根目...

  • 回答 8

    tcp协议负责数据的安全传输,ip协议负责路径

  • 回答 4
    已采纳

    通俗来说,所谓的根目录,就是Linux规定的,它管理文件主要是通过目录管理,而不是C盘D盘盘符管理。直观表现,就如图一点击档案,点击+other localtions。点击电脑,电脑旁边有【/】,进入之后,那么就是根目录。至于家目录,则在根目录下级,点击home就是家...

  • 回答 13
    已采纳

    VLAN 的作用把一个广播帧所能到达的整个范围称为二层广播域,简称广播域。显然,一个交换网络其实就是一个广播域。在该网络中,假定PC 0向PC 10发送一个单播帧Y。假定此时的S1、S3、S7的MAC地址表中存在关于PC 10的MAC地址的表项,但S2和S5的MAC地址表中不存...

  • 回答 16
    已采纳

    不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux中默认的shell是/bin/bash,流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途。bash大多数Linux系统默认使用的shell,bash shell 是 Bourne shell 的一个免费版...

  • 回答 12
    已采纳

    一个典型的Linux发行版包括:Linux核心,一些GNU库和工具,命令行shell,图形界面的X窗口系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公包,编译器,文本编辑器到科学工具的应用软件。主流的Linux发行版:Ubuntu, DebianGNU/Linux ,Fedora,Gento...

  • 回答 5

    客户端在等待服务器回复的 ACK 报文。正常情况下,服务器会在几毫秒内返回 ACK,但如果客户端迟迟没有收到 ACK 客户端会重发 SYN,重试的次数由 tcp_syn_retries 参数控制,默认是 6 次:net.ipv4.tcp_syn_retries = 6第 1 次重试发生在 1 秒钟后,接着会以翻...

  • 回答 4

    关于CLOSE_WAIT和TIME_WAIT状态,服务器端都有可能出现,TIME_WAIT出现应该是短连接较多,需要通过修改内核参数解决,CLOSE_WAIT状态则是服务器程序可能有问题,服务器需要主动close,以及epoll多路复用模型中使用linger调整关闭等待时间分析解决这类问题,关...

  • 回答 4

    参考这个文档https://help.aliyun.com/knowledge_detail/41334.html?spm=5176.11065259.1996646101.searchclickresult.237b23ff8elw5J

  • 回答 4

    看看系统内存是否足够多,然后分区的时候是否正常运行

  • 回答 5

    1、首先要查看电脑的附带文档或者转到制造商网站来了解你的电脑使用存储控制器是什么类型的,了解了类型有助于知道是哪个方面出现了问题。2、然后在另一台电脑上同样是转到制造商的网站,将最新的驱动程序下载下来,并且保存在usb闪存驱动器或者是别的可以移...

  • 回答 17

    Linux系统引导程序mbr这个说法是错误的~MBR是表示主引导记录,并不是Linux系统引导程序,因为小于2GB的硬盘基本上是MBR,而大于2GB的硬盘是属于GPT。按照你的情况,Linux系统引导程序应该是位于MBR区域,也就是说Linux系统变成了你的主引导记录,如果要删除的...

  • 回答 6

    数据字典是属于’SYS’用户的,用户‘SYS’ 和 ’SYSEM’是由系统默认自动创建的 Java Program!

  • 回答 2

    使用命令 whatis 可以先出显示出这个命令的用法简要,比如,你可以使用 whatiszcat 去查看‘zcat’的介绍以及使用简要。[root@localhost ~]# whatis zcatzcat [gzip] (1) – compress or expand files

没有解决我的问题,去提问