当前位置:首页 » 操作系统 » linux判断文件

linux判断文件

发布时间: 2022-10-02 20:06:59

A. linux下如何判断文件在哪个文件夹

inux下判断文件和目录是否存在[总结]

1、前言

工作中涉及到文件系统,有时候需要判断文件和目录是否存在。我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询。

2、stat系列函数

stat函数用来返回与文件有关的结构信息。stat系列函数有三种情况,分别对应文件名称、文件描述符和符号链接文件。stat结构描述了文件的属性,主要包括文件的类型、文件大小等等。详细stat结构如下所示:
复制代码

1 struct stat {
2 mode_t st_mode; // file type & mode(permissions)
3 ino_t st_ino; // i-node number(serial number)
4 dev_t st_dev; // device number(filesystem)
5 dev_t st_rdev; // device number for specials files
6 nlink_t st_nlink; // number of links
7 uid_t st_uid; // user ID of owner
8 gid_t st_gid; // group ID of owner
9 off_t st_size; // size in bytes, for regular files
10 time_t st_atime; // time of last access
11 time_t st_mtime; // time of last modification
12 time_t st_ctime; // time of last file status change
13 long st_blksize; // best I/O block size
14 long st_blocks; // number of 512-byte blocks allocated
15 };

复制代码

我们可以通过stat获取文件的类型和文件大小等信息。文件类型有:普通文件、目录文件、块特殊文件、字符特殊文件、FIFO、套接字和符号链接。要想通过stat系列函数来判断文件或者目录是否存在,当执行stat函数,如果文件存在时,还需进一步判断该文件是普通文件还是目录文件。

stat系列函数错误返回-1,错误码存在errno中,errno取值如下:
复制代码

1、ENOENT 参数file_name 指定的文件不存在
2、ENOTDIR 路径中的目录存在但却非真正的目录
3、ELOOP 欲打开的文件有过多符号连接问题, 上限为16 符号连接
4、EFAULT 参数buf 为无效指针, 指向无法存在的内存空间
5、EACCESS 存取文件时被拒绝
6、ENOMEM 核心内存不足
7、ENAMETOOLONG 参数file_name 的路径名称太长

复制代码

B. linux 判断目录里是否有文件

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


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

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

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

其中:

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

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

C. linux中如何判断是普通文件还是目录文件

使用ls命令即可区分文件夹和文件。示例:ls -la

说明:
-l 列出文件的详细信息。
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。

要判断是文件还是文件夹,看第一列的内容即可,第一列的第一个字母指明了文件类型:-”表示普通文件,“d”代表目录,“l”代表连接文件,“b”代表设备文件。

D. linux怎么判断文件类型

file只是将一些已有的文件中的特征记录拿出来,记录在一个文本文件里,当你用file
myfile的时候,它就遍历一下整个文件,看有没有这个标志性的记录.
呵呵,说白了,file只是给出点简单的提示而已,因为你在一个文本里写入:
Rar!
那么它就会把这个文件当成个.rar文件,是不是很白痴啊.(不过它就是这个功能,仅仅是给点提示,所以也没有什么好说的了

E. linux shell 判断文件是否存在

介绍了linux shell 中判断文件、目录是否存在的方法,分享给大家
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真

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

两个方式:find命令或者shell脚本。
1、find命令
find是linux下用于查找文件的通用方法。
find语法: find [指定查找目录] [查找规则] [查找完后执行的action]
例如:find /tmp -name wa* -type l ,是在/tmp下查找名为wa开头且类型为符号链接的文件。找到就表示存在。

2、shell脚本
在进行文件的自动处理中常常需要自动判别,下面的脚本判断test.log是否存在,存在则显示文件存在,否则显示文件不存在。
例子:编辑一个脚本判断文件是否存在

vi t.sh
#!/bin/bash
if [ -e /temp/test.log ];then //这里是判断语句,-e表示进行比较结果为真则存在
echo "文件存在"
else

echo "文件不存在"
fi

保存退出
执行:
sh t.sh

G. linux 怎么判断一个文件是否完整

1、用哈希值
2、一般下载文件时候,官方都会提供一个校验的md5或sha1哈希值
3、下载完计算一下哈希值对比一下就知道了
4、例如:cn_windows_10_ecation_version_1607_updated_jul_2016_x64_dvd_9056220.iso
SHA1:
下载后计算对比:
sha1sum filename
openssl sha1 filename

H. linux下如何判断该文件是否是可执行程序

无所谓什么可执行。随便一个文件都可以用“./filename”来执行(filename文件在当前目录内)。
如果该文件原本就不是设计用来执行的(随便举个例子,比如一个OpenOffice文档文件),敲入命令后执行,屏幕会报错,说某句不合语法啥的。如果这个文件就是设计用来执行的,比如你说的二进制和脚本文件,在代码没错的情况下,敲入命令后就会有预期的执行结果了。
如果文件属性里有x,那么你可以“./filename”来运行。否则,用“sudo
./filename”来执行。
而且终端中用ls命令后,这类属性带x的会显示绿色。

I. linux shell 如何判断一个文件是否存在

了解你的意思,首先,test命令是判断某一个特定的文件相关信息,也就是当你使用test这个命令的时候,你是清楚它叫什么名字的(只是你不知道它的相关信息)。如果你要判断比如你说的以hbc*开头的一类文件,最好就是使用ls命令或者find命令来作。你可以参考一下,下面的小测试。
mike
>>>
ls
-d
???
12-04-20
23:15
acp/
apc/
scl
tmp/
xmy/
mike
>>>
test
-d
x??
12-04-20
23:15
mike
>>>
echo
$?
12-04-20
23:16
0
mike
>>>
test
-d
x*
12-04-20
23:16
test:
too
many
arguments
使用find命令能很好查找已hbc开头的文件或者目录,但是它不能判断有没有这样的文件,因为你不能通过find的命令执行状态来判断是否有这样的文件,但是可以把find的输出导向到一个文件,从而对文件进行判断。如下:
mike
>>>
find
./
-type
d
-name
"FUK*"
-print
12-04-20
23:24
mike
>>>
echo
$?
12-04-20
23:24
0

J. 关于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

热点内容
i7900k配置什么样显卡 发布:2025-05-16 23:34:50 浏览:924
苹果火影忍者脚本 发布:2025-05-16 23:23:46 浏览:450
python写入数据库 发布:2025-05-16 23:19:11 浏览:698
修复系统时什么配置好 发布:2025-05-16 22:52:07 浏览:803
逆战脚本挂机 发布:2025-05-16 22:30:01 浏览:936
java随机产生数 发布:2025-05-16 22:25:52 浏览:256
java任务管理 发布:2025-05-16 22:17:02 浏览:573
安卓如何修改cpu 发布:2025-05-16 21:58:20 浏览:366
pythonainb 发布:2025-05-16 21:45:56 浏览:857
淘汰服务器可以做家用电脑吗 发布:2025-05-16 21:41:31 浏览:844