导航:首页 > 操作系统 > linux判断文件为空

linux判断文件为空

发布时间:2022-11-25 08:17:33

linux中怎么找出空文件夹

可以使用find命令。find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
find的使用格式如下:$ find <指定目录> <指定条件> <指定动作>
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
对于本问题来说,可以使用-type d约束只搜寻文件夹,使用-empty约束寻找空文件夹。
find -type d –empty //可参考《linux就该这么学》第二站

Ⅱ linux脚本开发-关于压缩文件脚本的判断修改

你可以判断文件是否为空,如果为空不压缩,如果不为空则可以压缩,,if [[ ! -s filename ]] <==如果文件存在且为空,-s代表存在不为空,!将他取反
then
ok
fi你自己把代码再改改..

Ⅲ linux 判断一个目录是不是为空的

while(dq = readdir(dir)){
if(strcmp(dq->d_name,".")==0||strcmp(dq->d_name,"..")==0)
continue;//这里可以忽略"."和".."
else if(dq->d_type == DT_DIR){
printf("目录:%s\n",dq->d_name);
char buf[256]={};
sprintf(buf,"%s/%s",path,dq->d_name);
rmdir(buf);
del_dir(buf);
}

else
printf("文件:%s\n",dq->d_name);
}这里是遍历整个目录的代码
给我13亿个赞,不要多

Ⅳ linux shell编程 test 如何判断文件类型,如果文件为空

-e file 如果 file存在,则为真
-d file 如果 file为目录,则为真
-f file 如果 file为常规文件,则为真
-L file 如果 file为符号链接,则为真
-r file 如果 file可读,则为真
-w file 如果 file可写,则为真
-x file 如果 file可执行,则为真
-s file 如果 file长度不为0,则为真
-h file 如果 file是软链接,则为真

Ⅳ Linux find 命令详解

find 命令的基本结构如下:
find [paths] [expression] [actions]

find 命令接受一个或多个 路径 ( paths )作为搜索范围,并在该路径下 递归 地搜索。即检索完指定的目录后,还会对该目录下的子目录进行检索,以及子目录下的子目录。。。直到到达目录树底部。

默认情况下(不带任何搜索条件),find 命令会返回指定目录下的 所有文件 ,所以常常需要通过特定的 expression 对结果进行 筛选

find 命令默认的 action 是将所有检索结果打印至标准输出。可以通过自定义 action ,让 find 命令对搜索到的结果执行特定的操作。

这里先不做详细解释,简单地测试下 find 命令:

find 命令中的 -name 选项可以根据文件名称进行检索( 区分大小写 )。如需要忽略文件名中的大小写,可以使用 -iname 选项。

-name 和 -iname 两个选项都支持 wildcards 。如:

find /usr -name '*.txt' 查找 /usr 目录下所有文件名以 .txt 结尾的文件
find /usr -name '????' 查找 /usr 目录下所有文件名刚好为 4 个字符的文件

有些时候,你需要在搜索时匹配某个文件或目录的 完整路径 ,而不仅仅是匹配文件名。可以使用 -path 或 -ipath 选项。

如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src 。可以使用以下命令:
find /usr -path '*/src/*.txt'

如果只想搜索得到文件 目录,即不想它们同时出现在结果中。可以使用 -type 选项指定文件类型。

-type 选项最常用的参数如下:

find /usr -type d -name 'python*' 检索 /usr 下所有文件名以 python 开头的 目录

find 命令支持 -empty 选项用来检索 为空 的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。

find ~ -type d -empty 检索用户主目录下所有的空目录

find 命令也允许用户对当前的匹配条件进行 “反义” (类似于 逻辑非 操作)。

如需要检索 /usr 下所有文件名 以 .txt 为后缀的文件。可以使用以下命令:
find /usr -type f ! -name '*.txt'

也可以“翻转”任何其他的筛选条件,如:
find /usr -type f ! -empty 检索 /usr 下所有内容不为空的文件

为了检索归属于特定用户的文件或目录,可以使用 -user 选项。

find / -type f -user starky 检索根目录下所有属主为 starky 的文件

类似于 -user 选项, -group 选项则可以根据文件或目录的 属组 进行检索。

有些时候,需要根据文件创建或修改的时间进行检索。

Linux 系统中,与文件相关联的时间参数有以下三种:

与此对应的是 find 命令中的 -mtime , -atime 和 -ctime 三个选项。

这三个选项的使用遵循以下示例中的规则:

find /usr -type f -mtime 2 检索 /usr 下两天前被修改过的文件

如果觉得 -mtime 等选项以 为单位时间有点长,还可以使用 -mmin , -amin , -cmin 三个选项:
find /usr -type f -mtime +50 -mtime -100 检索 /usr 下 50 到 100 天之前修改过的文件
find /usr -type f -mtime 2 -amin 5 检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件

-size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。

表示文件大小的单位由以下字符组成:

另外,还可以使用 + 或 - 符号表示 大于 小于 当前条件。

find / -size +1G 检索文件大小高于 1 GB 的文件

find 命令可以使用 -perm 选项以文件权限为依据进行搜索。

如需要检索 /usr 目录下权限为 rwxr-xr-x 的文件,可以使用以下命令:
find /usr -perm u=rwx,g=rx,o=rx

搜索 /usr 目录下所有权限为 r-xr-xr-x (即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:
find /usr -perm a=rx

很多时候,我们只想匹配文件权限的一个 子集 。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么。

上述的需求可以通过以下命令实现: find / -type f -perm /a=x
其中 a=x 前面的 / 符号即用来表示只匹配权限的某个子集(执行权限),而不用关心其他权限的具体设置。

-perm 选项也支持数字形式的文件权限标记。

find /usr -perm 644 搜索 /usr 目录下权限为 644 (即 rwxr-xr-x )的文件

find 命令默认是以 递归 的方式检索项目的,这有时候会导致得到的结果数量非常巨大。可以使用 -maxdepth 限制 find 命令递归的层数。

find / -maxdepth 3 搜索时向下递归的层数最大为 3

在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转
实际上 find 命令支持 “and” “or” 两种逻辑运算,对应的命令选项分别是 -a 和 -o 。通过这两个选项可以对搜索条件进行更复杂的组合。

此外还可以使用 小括号 对搜索条件进行 分组 。注意 find 命令中的小括号常需要用 单引号 包裹起来。因小括号在 Shell 中有特殊的含义。

如检索 /usr 下文件名以 python 开头且类型为目录的文件
find /usr -type d -name 'python*'

该命令等同于:
find /usr -type d -a -name 'python*'

更复杂的组合形式如:
find / '(' -mmin -5 -o -mtime +50 ')' -a -type f

-delete 选项可以用来删除搜索到的文件和目录。

如删除 home 目录下所有的空目录:
find ~ -type d -empty -delete

-exec 选项可以对搜索到的结果执行特定的命令。

如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是 /media/MyDrive ),可使用下面的命令:
find ~ -type f -name '*.mp3' -exec cp {} /media/MyDrive ''

其中的 大括号 ( {} )作为检索到的文件的 占位符 ,而分号( ; )作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来。
每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {} ,然后执行 -exec 后面的命令一次。

另一个很重要的用法是,在多个文件中检索某个指定的字符串。
如在用户主目录下的所有文件中检索字符串 hello ,可以使用如下命令:
find ~ -type f -exec grep -l hello {} ''

创建 Gzip 格式的压缩文件的命令为: tar -czvf filename.tar.gz <list of files>

现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中,直观的感觉是,其命令应为如下形式:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ''

实际情况是,这样得到的 music.tar.gz 其实只包含一个 MP3 文件。
原因是 find 命令 每次 发现一个音频文件,都会再执行一次 -exec 选项后面的压缩命令。导致先前生成的压缩包被覆盖。

可以先让 find 命令检索出所有符合条件的音频文件,再将得到的 文件列表 传递给后面的压缩命令。完整的命令如下:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} +

如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用 -ls 选项。

find / -type file -size +1G -ls 浏览所有 1G 以上大小的文件的详细信息

A Guide to the Linux “Find” Command
find 命令手册 : man find

Ⅵ linux 判断目录里是否有文件

如果是在脚本中可以写成:


if[[$(ls目录名)]];then
echo"有文件"
else
echo"没有"
fi

如果是在命令行中,可写成一行:

if[[$(ls目录名)]];thenecho"有文件";elseecho"没有";fi

其中:

$(ls目录名) 是目录里文件的列表

if[[$(ls目录名)]] 表示如果目录内有文件为真,如果目录内没有文件则为假

Ⅶ linux file命令

file [-beLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]
【功能】
辨识文件类型。
【举例】
*检查文件类型:
$ file file.cfile /dev/hda
输入之后,输出如下:
file.c: C program text
file: ELF 32-bit LSB executable, Intel 80386,version 1,
dynamically linked, notstripped
/dev/hda: block special
*检查文件类型,不输出文件名:
$file -b test/
输入之后,输出如下:
directory
*检查文件类型,文件名和结果用,隔开:
$file -F,example/
输入之后,输出如下:
example, directory
这里可以指定其它的分割字符。
*检查块文件内部,获得文件系统信息
$ file -s/dev/hda{,1,2,3,4,5,6,7,8,9,10}
输入之后,输出如下:
/dev/hda: x86 boot sector
/dev/hda1: Linux/i386 ext2 filesystem
/dev/hda2: x86 boot sector
/dev/hda3: x86 boot sector, extended partition table
/dev/hda4: Linux/i386 ext2 filesystem
/dev/hda5: Linux/i386 swap file
/dev/hda6: Linux/i386 swap file
/dev/hda7: Linux/i386 swap file
/dev/hda8: Linux/i386 swap file
/dev/hda9: empty
/dev/hda10: empty
这里,如果没有权限,执行不了。
【描述】
ile 命令的使用. File 命令试图检查每个参数以判定文件的类型. 检查共有三组,按如下顺序进行:文件系统检查,幻数检查,以及语言检查. 文件系统检查成功则输出文件类型.
输出的类型一般会包含以下的词中的一个: text (文件中仅有 ASCII 字符,可以用 ASCII 终端读此文件,以保证内容的可靠性), executable (文件中保存的是程序编译后的结果,一些UNIX 内核或其它内核能理解这类文件), 或者 data 表示所有其它类型文件(data 一般为二进制文件或者不可打印的). 但是有的常用的文件格式(如core文件、tar包),虽然也包含二进制数据,却不属于这一类如果要修改 /usr/share/magic 或者程序本身, preserve these keywords . 当文件为``text'' 类型时,认为此文件为可读文件. 不要象在Berkeley环境中那样做 - 要把``shell commands text''改为``shell script''.
文件系统检查是建立在对 stat(2) 系统调用结果的分析上的. 程序会分析文件是否为空,或者是否是某种特殊文件. 对于所有可在现有系统上使用的文件类型 (比如套接口文件,动态链接文件,命名管道文件(FIFOs) 等),只要它在系统头文件 sys/stat.h 中已经定义过,就可以被检查到.
幻数检查用来检查文件中是否有特殊的固定格式的数据. 规范的例子如二进制可执行文件(编译后的程序) a.out ,该文件格式在标准include目录下的 a.out.h 文件中定义,也可能在 exec.h 中定义. 这些文件在文件开始部分附近的一个特殊位置保存有一个'幻数' , 通过幻数告诉UNIX 操作系统此文件是二进制可执行文件, 和其中包含的其它类型. 幻数的概念已经扩展到数据文件.任何在文件固定位置有与文件类型相关的不变标识符的文件都可以这样表示. 这些文件中的信息可以从幻数文件 /usr/share/magic 中读取.

如果文件为 ASCII 文件, file 会试图检查它的语言. 语言检查在文件开始的几个块中(任意位置)查找是否有特殊字符串(参看 names.h) .br 指出此文件很可能是 troff(1) 输入文件, 而关键字 struct 指出此文件是C程序. 语言检查不如前两组检查可靠,所以放在最后执行.它也用来检查一些混合文件(例如 tar(1) 存档文件)并确定文件是`ascii text'类型还是`data'类型.
选项
-b
不输出文件名 (简要模式).
-c
检查时打印输出幻数文件的解析结果.常与 -m 一起使用,用来在安装幻数文件之前调试它.
-f 命名文件
从在参数表前的命名文件中读出将要检查的文件名(每行一个文件).要有命名文件,或者至少有一个文件名参数; 如果要检查标准输入, 使用``-''作为文件参数.
-m list
指定包含幻数的文件列表.可以是单个文件,也可以是用冒号分开的多个文件.
-n
每检查完一个文件就强制刷新标准输出. 仅在检查一组文件时才有效. 一般在将文件类型输出到管道时才采用此选项.
-v
打印程序版本并退出.
-z
试图查看压缩文件内部信息.
-L
(在支持符号链接的系统上)选项显示符号链接文件的原文件, 就像 ls(1) 命令的like-named 选项.
-s
通常, file 只是试图去检查在文件列表中那些 stat(2) 报告为正常文件的文件的类型.由于读特殊文件将可能导致不可知后果,所以这样可以防止发生问题.使用 -s 选项时 file 命令也将去读文件列表中的块特殊文件和字符特殊文件. 一般用于从原始磁盘分区中获得文件系统类型,此文件为块特殊文件. 这个选项也导致 file 命令忽略 stat(2) 报告的文件大小,因为在有些系统中原始磁盘分区的大小报告为0.

【其它】
文件
/usr/share/magic - 默认的幻数列表
ENVIRONMENT
环境变量 MAGIC 用于设置默认的幻数文件.
参看
magic(4) - 幻数文件的格式.
strings(1), od(1),hexmp(1) - 检查非textfile的工具.
标准的一致性
本程序比System V 的FILE命令强大, 几乎能分辨出所有的模糊语言. 与System V 的FILE命令大部分兼容.本版本能识别更多的magic, 但是,也将因此在有些情况下会产生不同输出(尽管更加精确).
本版本与System V的显着区别就是本版本对空格是作为分隔符来处理的, 所以不能在格式字符串中包含空格. 例如,现有幻数文件中的
>10 string language impress (imPRESSdata)
要改为
>10 string language\ impress (imPRESSdata)
另外, 格式字符串中的反斜线符号也要避免.例如,现有幻数文件中的
0 string \begindata Andrew Toolkit document
要改为
0 string \\begindata Andrew Toolkit document

SunOS releases 3.2及以后的版本包括从System V 发展来的 file(1) 命令,但有所扩展.本版本与Sun的file命令差别不大.它包括对 `&' 操作符的扩展,例如,
>16 long&0x7fffffff >0 not stripped
MAGIC DIRECTORY
幻数文件项主要是从USENET收集来的,许多人都为此作出了贡献. Christos Zoulas (下边将提到的)将收集附加项信息及修正幻数文件项. 幻数文件项的合并表将会定时发布.
幻数文件项的顺序非常重要.不同的系统上的幻数项放的顺序可能不同. 如果老的 file 命令使用幻数文件,请将旧的幻数文件改名保存, (如改为 /usr/share/magic.orig) 以便日后做比较用.

Ⅷ linux中怎么查看文件是否存在

两个方式:find命令或者shell脚本。

1、find命令

(1)find是linux下用于查找文件的通用方法。

(2)find语法: find [指定查找目录] [查找规则] [查找完后执行的action]

(3)例如:find /tmp -name wa* -type l ,是在/tmp下查找名为wa开头且类型为符号链接的文件。找到就表示存在。

2、shell脚本

(1)在进行文件的自动处理中常常需要自动判别,下面的脚本判断test.log是否存在,存在则显示文件存在,否则显示文件不存在。

(2)例子:编辑一个脚本判断文件是否存在。

vi t.sh

#!/bin/bash

if [ -e /temp/test.log ];then //这里是判断语句,-e表示进行比较结果为真则存在

echo "文件存在"

else

echo "文件不存在"

fi

保存退出

执行:

sh t.sh

Ⅸ 关于linux,shell脚本中怎样判断文件是否有内容

可以用“test 条件表达式”进行测试,如:test -f /etc/fstab 测试文件/etc/fstab文件是否存在

-e File 如果文件File存在(Exist),则为True
-s File 如果文件File存在且文件大小(Size)大于零,则为True
-f File 如果文件File存在且是普通文件(File),则为True
-d File 如果文件File存在且是目录(Directory),则为True
-b File 如果文件File存在且是块(Block)特殊文件,则为True
-c File 如果文件File存在且是字符(Character)特殊文件,则为True
-L File 如果文件File存在且是符号链接(Link)文件,则为True
-r File 如果文件File存在且是可读的(Readable),则为True
-w File 如果文件File存在且是可写的(Writable),则为True
-x File 如果文件File存在且是可执行的(Executable),则为True
-O File 如果文件File存在且属于当前用户(Owner),则为True
-G File 如果文件File存在且属于当前用户组(Group),则为True
File1 -nt File2 如果文件File1新于(Newer Then) File2,则为True
File2 -ot File2 如果文件File1旧于(Older Then) File2,则为True

Ⅹ linux makefile 判断文件存在与否

makefile判断文件存在如下的两种方法:
1. 调用shell的函数进行判断
exist = $(shell if [ -f $(FILE) ]; then echo "exist"; else echo "notexist"; fi;)
ifeq (exist, "exist")
#do something here
endif当然,这个方法很土,但是能够工作!! 2. 使用makefile的函数进行判断ifeq ($(FILE), $(wildcard $(FILE)))
#do something here
endif $(wildcard $(FILE))的意思是当前路径下的文件名匹配FILE的文件展开。假设当前路径下存在a.c 和 b.c,那么执行src=$(wildcard *.c)src的值就为a.c b.c;如果不使用通配符,比如src=$(wildcard c.c);那么就是要展开当前路径下,文件名为c.c的文件,因为当前路径下文件不存在,因此src为空字符串。

阅读全文

与linux判断文件为空相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:144
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163