linux查看文件修改前后差别的代码

linux查看文件修改前后差别的代码,第1张

在这里,我们将看到如何使用C ++程序在Linux平台上列出修改后的文件以及旧的和新创建的文件。

任务很简单。我们可以使用Linux shell命令以所需顺序获取文件。ls –l命令用于获取长列表格式的所有文件。在这里,我们将添加更多选项以根据时间对它们进行排序。(升序和降序)。–t命令用于根据时间排序,并且–r可添加以反转顺序。

该命令将如下所示:ls –lt

ls –ltr

我们将使用system()C ++中的函数使用这些命令,以从C ++代码获取结果。

范例程式码#include

using namespace std

main(){

//显示存储在当前目录中的文件的修改时间降序

cout <

system("ls -lt")//use linux command to show the file list, sorted on time

cout <

system("ls -ltr")//use the previous command -r is used for reverse order

}

输出结果Files List (First one is newest)

total 32

-rwxr-xr-x 1 soumyadeep soumyadeep 8984 May 11 15:19 a.out

-rw-r--r-- 1 soumyadeep soumyadeep 424 May 11 15:19 linux_mod_list.cpp

-rw-r--r-- 1 soumyadeep soumyadeep 1481 May 4 17:03 test.cpp

-rw-r--r-- 1 soumyadeep soumyadeep 710 May 4 16:51 caught_interrupt.cpp

-rw-r--r-- 1 soumyadeep soumyadeep 557 May 4 16:34 trim.cpp

-rw-r--r-- 1 soumyadeep soumyadeep 1204 May 4 16:24 1325.test.cpp

Files List (First one is oldest)

total 32

-rw-r--r-- 1 soumyadeep soumyadeep 1204 May 4 16:24 1325.test.cpp

-rw-r--r-- 1 soumyadeep soumyadeep 557 May 4 16:34 trim.cpp

-rw-r--r-- 1 soumyadeep soumyadeep 710 May 4 16:51 caught_interrupt.cpp

-rw-r--r-- 1 soumyadeep soumyadeep 1481 May 4 17:03 test.cpp

-rw-r--r-- 1 soumyadeep soumyadeep 424 May 11 15:19 linux_mod_list.cpp

-rwxr-xr-x 1 soumyadeep soumyadeep 8984 May 11 15:19 a.out

相关资源:高性能跨平台(Win&Linux)网络通信框架HP-Socket_易语言hpsocket...

文章知识点与官方知识档案匹配

CS入门技能树Linux入门创建一个空白文件

23936 人正在系统学习中

打开CSDN,阅读体验更佳

每天一个新知识之linux下利用diff比较两个文件的差异并使用patch进行差异...

1、首先我们先来了解下diff和patch这两个命令的使用方式diff 选项 旧文件 新文件 #作用比较新旧文件的不同常用选项用途-a将文档当作文本文档来处理-b忽略空格造成的差异-B忽略空白行造成的差异-I忽略大小写造成的差异-N当比较两个目录...

继续访问

Linux下 用cmp工具备份,文件比较工具:diff,cmp_贾少女的博客-CSDN博 ...

补充说明:patch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。

继续访问

新旧文件对比软件、文件对比

一款不可多得的专业级的文件夹和文件对比工具。使用他可以很方便的对比出两个文件夹或者文件的不同之处。并把相差的每一个字节用颜色加以表示,查看方便。并且支持多种规则对比。 对软件汉化者来说,这绝对是一款不可多得的工具。

linux查找最老文件,linux find命令查找比某个文件新或旧的文件

如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项。它的一般形式为:复制代码代码如下:newest_file_name ! oldest_file_name---其中,!是逻辑非符号。$ find . / -newer age.txt ! -newer belts.txt -exec ls -l {} /例如:查找2012年17日17:00到17:40更新的文件...

继续访问

linux 那些文本工具,linux之文本比较工具_weixin_39839541的博客-CSDN...

新建的passwd.old和passwd.new之间是两个不同的版本,如果要软件升级怎么办?就是将旧的文件升级为新的文件,可以先比较新旧版本,再将区别文件制作成不定文件,再由补丁文件更新旧文件 [root @localhost vitest]#diff -Naur passwd.old ...

继续访问

Linux 检查文件与比较两个文件(非常详细)_i鲸落i的博客_linu...

Linux 检查文件与比较两个文件(非常详细) linux中如何去检查文件 ,看文件是否存在呢? 今天我们用到命令是test命令,这个命令最关键的作用就是用来检查/比较文件 目录

继续访问

[C/C++][文件 *** 作] 对比目录并列出同名较新文件、较旧文件 0.1

作者 523066680@163.com,转载请注明出处:[C/C++][文件 *** 作]目录/文件夹对比并列出同名较新文件、较旧文件 V1 主要是模仿robocopy的部分功能 (robocopy /L 参数可以列出本地目录和备份目录中的异同之处,主要是标记出:较新的、较旧的、多出的文件 ) 现在还不会写GUI,打算后面自己做目录树diff,可以手动点选要复制的文件。 同时我也...

继续访问

linux下的文件比对工具,Linux - 文件比对工具

通常一个软件包的不同版本之间,比较配置文件与原始档的差异时,经常用到一些文件比对的工具。这里就讲一下diff和cmp。1. 以行为单位对比的diff由于是以行为比对的单位,因此diff常常是用在同一文件(或软件)的新旧版本差异上。工作模式:diff [-bBi] file1 file2选项与参数-- file1 :作为原始比对文件的文档名-- file2 :作为目的比对文件的文档名注意,file1...

继续访问

linux下文件比较工具diff|cmp使用小结_wangww631的博客_cmp...

diff是Unix系统的一个很重要的工具程序。它用来比较两个文本文件的差异,是代码版本管理的基石之一。 2.diff使用格式 (1)比较文件 [plain]view plaincopy diff filename_1 filename_2 diff filename_1 filename_2 ...

继续访问

Linux命令详解1--文件和目录管理之文件查找和比较_dijiao1273的博客-CSD...

locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查...

继续访问

Shell条件测试之文件比较

文件比较(文件测试运算符): -d file : file是否为目录,directory简写d -f file : file是否为文件,file简写为f -e file :file是否存在,exist简写为e -r file :file是否可读,read简写r -w file : file是否可写,write简写为w -x file : file是否可执行,execute执行简写为x ...

继续访问

linux对比文件更新

比较服务器本地差异文件上传 rsync-c-n-I-vzrtopg-P--excludeRuntime/--exclude'.git*'--exclude'Menu*'--exclude'Application/Common/Common/function.php'--exclude'Application/Home/Controller/CabinetController.class.php'--exclude'Application/Home/Model/Cabin...

继续访问

Linux文本比较指令(diff,cmp)详解_siasjack的博客

一、文本文件比较命令diff 1>diff命令的功能 Linux中diff命令的功能为逐行比较两个文本文件,列出其不同之处。它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序。

继续访问

linux下文件比较工具diff|cmp使用小结

1.diff diff是Unix系统的一个很重要的工具程序。它用来比较两个文本文件的差异,是代码版本管理的基石之一。 2.diff使用格式 (1)比较文件 diff filename_1 filename_2(2)比较目录 diff dir_1 dir_2diff命令常用的选项: -b —— 忽略一行中的空字符的区别(例如“Hello World!!” 与 “Hello

继续访问

热门推荐 Linux 比较两个文件的差异并显示

Linux 中 diff 用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。可以用来比较单个文件或者目录内容。根据不同的选项进行比较并且显示。

继续访问

在 Linux 上比较文件的聪明方法

自 Linux 早期以来,用于比较文件的命令已经激增。在这篇文章中,我们将介绍一组可用于比较文件的命令,并重点介绍一些较新的命令所提供的优势。 差异 diff命令是用于检测和报告文件差异的最古老且仍然流行的命令之一。比较两个与会者列表,diff命令将简单而清晰地向您显示差异。 $ diff 出勤-2020 出勤-2021 10,12c10 <门罗·兰德里 <乔纳森·穆迪 <唐纳尔摩尔 --- >桑德拉·亨利-斯托克 仅显示不同的行。输出位于仅在第一个文件中带有&lt

继续访问

Linux命令 - diff 命令(比较文件的差异)

Linux diff 命令 文章目录Linux diff 命令简介输出结果解释实例实例1:比较两个文件实例2:并排格式输出常用参数 简介 Linux diff 命令用于比较文件的差异。 diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。 输出结果解释 diff 比较结果的含义,diff 描述两个文件不同的方式是告诉我们怎么样改变第一个文件之后与第二个文件匹配。 a = add c = change d = d

继续访问

文件新旧判断和字符串判断

两个文件之间进行比较 文件1 -nt 文件2 判断文件1的修改时间是否比文件2的新 文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧 文件1 -ef 文件2 判断文件1是否和文件2的inode号一致,可以理解为两个文件是否为同一个文件。这个判断用于判断硬链接是很好的方法。 字符串的判断 -z 字符串 判断字符串是否为空 -n 字符串 判断字符串是...

继续访问

Linux diff 比较文件差异

作者:解琛 时间:2020 年 8 月 28 日 diff 为 Linux 命令,用于比较文本或者文件夹差异,可以通过 man 来查询其功能以及参数的使用。 使用 patch 命令可以对文件或者文件夹应用修改。 diff -r -u -P proj_a_original proj_a_mine >diff.patch 递归的比较文件夹差异,并将结果重定向输出到 diff.patch 文件中。 proj_a_original 指 proj_a 的源文件,即未经修改的源码包,proj_a_mine.

继续访问

每天一个新知识之linux下利用diff比较两个文件的差异并使用patch进行差异文件同步

1、首先我们先来了解下diff和patch这两个命令的使用方式 diff 选项 旧文件 新文件 #作用比较新旧文件的不同 常用选项 用途 -a 将文档当作文本文档来处理 -b 忽略空格造成的差异 -B 忽略空白行造成的差异 -I 忽略大小写造成的差异 -N 当比较两个目录时,如果某个文件只在一个目录中,则在另一个目录中将视为空文件 -r 比较目录时递归比较子目录 -u 使用统一的输出格式 patch 选项 <修补文件 #用于修补文件。 常用

继续访问

Linux文件对比

diff /etc/rc0.d/ /etc/rc5.d/ Only in /etc/rc0.d/: K90network Only in /etc/rc5.d/: S10network 文件对比工具:Kompare Kompare是一种比较GUI包装器,让用户可以查看文件之间的差异,并且合并文件。 它的一些功能包括如下: 支持多种diff格式 支持目录比较 支持读取diff文件 可...

继续访问

Linux系列九-文件比较diff、patch

一、diff 文件比较 diff [-bBi] sourcefile targetfile -b 忽略行中的多个空白的区别,如 about me 与about me相同 -B 忽略空白行 -i 忽略大小写 二、patch 结合diff使用,由比较得出的差异内容,可向文件中补充差异内容 patch -pN <patchfile patch -...

继续访问

Linux对比文件差异

方法一 使用diff # 最简单的 diff file1 file2 显示的结果怎么看? "|"表示前后2个文件内容有不同; "<"表示后面文件比前面文件少了1行内容; ">"表示后面文件比前面文件多了1行内容。 方法二(直观,推荐) 使用vimdiff 首先要注意,vimdiff是基于diff的 # 最简单的 vimdiff file1 file2 # 也可以 vim -d file1 file2 显示的结果怎么看? 比较文件连续的相同行被折叠; 只在某一文件存的行

继续访问

最新发布 Shell命令比较2个文件的差异

1、测试创建文件a.txt touch a.txt vim a.txt shift+i插入数据 aaa bbb ccc 2、测试创建文件b.txt touch b.txt vim b.txt shift+i插入数据 111 bbb aaa 3、比较2个文件的差异 4、排序后再比较 cat a.txt|sort|uniq|sort>a_u.txt cat b.txt|sort|uniq|sort>b_u.txt 5、比较排序后的a_u.txt和b_u.txt文件的差 6、个人认为以后比较2个文

继续访问

linux比较文件的新旧

linux中文件新旧怎么比

1、读取文件全部内容

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char* argv[])

{

char ch

FILE* fp

unsigned long int count = 0

char buf[1025] = {0}

// 这里要求我们在输入两个参数,第一个为 exe 路径,第二个为 文件名

// 如 file_test.exe test.txt

if (argc != 2)

{

printf("Usage: %s filename\n", argv[0])

exit(EXIT_FAILURE)

}

if ((fp = fopen(argv[1], "r")) == NULL)

{

// 如果文件打开失败(通常是文件不存在),则结束程序

printf("Can't open %s\n", argv[1])

exit(EXIT_FAILURE)

}

while ((ch = getc(fp)) != EOF &&count <1024)

{

// 显示文本内容并计数

buf[count] = ch

count++

}

fclose(fp)

printf("%s\n", buf)

printf("File %s has %lu characters\n", argv[1], count)

return 0

}

2、cJSON解析字符串

编译选项要加 -lm

示例源串

{

"server": {

"nodes": [{

"ip": "10.76.76.190",

"port": 6379

}, {

"ip": "10.76.76.191",

"port": 6380

}, {

"ip": "10.76.76.192",

"port": 6381

}],

"password": "admin"

},

"isssl": true

}

登录后复制

示例代码(每一行记得判空,编译时加-lm选项)

#include <stdio.h>

#include "cJSON.h"

int main(){

char c[] = "{\"server\":{\"nodes\":[{\"ip\":\"10.76.76.190\",\"port\":6379},{\"ip\":\"10.76.76.191\",\"port\":6380},{\"ip\":\"10.76.76.192\",\"port\":6381}],\"password\":\"admin\"},\"isssl\":true}"

cJSON* root = cJSON_Parse(c)

cJSON* json_server = cJSON_GetObjectItem(root, "server")

cJSON* json_isssl = cJSON_GetObjectItem(root, "isssl")

cJSON* json_password = cJSON_GetObjectItem(json_server, "password")

cJSON* json_nodes = cJSON_GetObjectItem(json_server, "nodes")

int i = 0

for (i != cJSON_GetArraySize(json_nodes)++i) {

cJSON* each = cJSON_GetArrayItem(json_nodes, i)

cJSON* json_ip = cJSON_GetObjectItem(each, "ip")

cJSON* json_port = cJSON_GetObjectItem(each, "port")

printf("ip %s\n", json_ip->valuestring)

printf("port %d\n", json_port->valueint)

}

printf("password %s\n", json_password->valuestring)

printf("is ssl %s\n", json_isssl->valueint ? "true":"false")

cJSON_Delete(root)

}

3、curl拿到回传的数据

编译选项要加 -lcurl

头部选项参考

https://curl.se/libcurl/c/curl_easy_setopt.html

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <curl/curl.h>

struct string {

char* ptr

size_t len

}

void init_string(struct string* s) {

s->len = 0

s->ptr = malloc(s->len + 1)

if (s->ptr == NULL) {

fprintf(stderr, "malloc() failed\n")

exit(EXIT_FAILURE)

}

s->ptr[0] = '\0'

}

size_t writefunc(void* ptr, size_t size, size_t nmemb, struct string* s) {

size_t new_len = s->len + size * nmemb

s->ptr = realloc(s->ptr, new_len + 1)

if (s->ptr == NULL) {

fprintf(stderr, "realloc() failed\n")

exit(EXIT_FAILURE)

}

memcpy(s->ptr + s->len, ptr, size * nmemb)

s->ptr[new_len] = '\0'

s->len = new_len

return size * nmemb

}

int main(void) {

CURL* curl

CURLcode res

curl = curl_easy_init()

if(curl) {

struct string s

init_string(&s)

curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com")

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "test")

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc)

curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s)

res = curl_easy_perform(curl)

printf("打印数据:\n%s", s.ptr)

free(s.ptr)

/* always cleanup */

curl_easy_cleanup(curl)

}

return 0

}

4、获取随机数

#include <stdio.h>

int main(int argc, char* argv[]){

srand((int)time(0))

//打印 32位 test 随机数,并用16进制表示

int test2 = rand()

printf("%lx \n", test2)

// 打印 64位 test 随机数,并用16进制表示, 016代表不足16位的部分,补零,llx代表打印64位的16进制数

unsigned long long test = ((unsigned long long)rand() <<32) + rand()

printf("%016llx \n", test)

return 0

}

5、定义按位的结构体

总结,按照位定义结构体,一定要都按照位定义,不然会出现意想不到的错误,而且一定要定义无符号的

#include <stdio.h>

#pragma pack (1)

struct test1 {

unsigned char cloud_id:3

unsigned char vendor_id:4

unsigned short machine_id

unsigned long long current_time:41

}

struct test2 {

unsigned char cloud_id:3

unsigned char vendor_id:4

unsigned short machine_id:16

unsigned long long current_time:41

}

int main(int argc, char* argv[]){

printf("test1 大小 : %d \n", sizeof(struct test1))

printf("test2 大小 : %d \n", sizeof(struct test2))

return 0

}

6、按位打印01字节码

#include <stdio.h>

// 修改type后面的类型,可以查看各种数的字节码

#define type unsigned int

void print_bin(type num)

{

int len = sizeof(type)

int n = 8

int i, j, k

unsigned char *p = (unsigned char*)&num + len -1

for (i = 0i <leni++) //处理len个字节

{

j = *(p - i)//取每个字节的首地址

for ( k = 7k >= 0k--) //处理每个字节的8个位

{

if (j &(1 <<k))

printf("1")

else

printf("0")

}

printf(" ")

}

printf("\r\n")

}

int main(int argc, char* argv[]){

type a = 100

print_bin(a)

return 0

}

登录后复制

7、打印16进制字节码

#include<stdio.h>

typedef unsigned char uint8

#define HEXDUMP_LINE_LENGTH 16

void hex_dump(uint8* data, int length)

{

uint8* p = data

int i, line, offset = 0

while (offset <length)

{

printf("%04x ", offset)

line = length - offset

if (line >HEXDUMP_LINE_LENGTH)

line = HEXDUMP_LINE_LENGTH

for (i = 0i <linei++)

printf("%02x ", p[i])

for (i <HEXDUMP_LINE_LENGTHi++)

printf(" ")

for (i = 0i <linei++)

printf("%c", (p[i] >= 0x20 &&p[i] <0x7F) ? p[i] : '.')

printf("\n")

offset += line

p += line

}

}

8、打印字节码简易版

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

void main() {

unsigned char Buf[] = "123456"

unsigned int len = strlen(Buf)

char* Buf1 = (char*)malloc(len * 3 + 1)

int i = 0, k = 0

for (i <len * 3i += 3, k++)

snprintf(&Buf1[i], 4, "%02x ", Buf[k])

printf(Buf1)

free(Buf1)

}

9、逐级创建文件夹

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <sys/stat.h>

#include <sys/types.h>

int mkdir_recursively(char* dir) {

if (NULL == dir)

return 1

size_t len = strlen(dir)

char* str = malloc(len + 1)

if (NULL == str)

return 1

strcpy(str, dir)

int i = 0

for (i = 0i <leni++) {

if (str[i] == '/') {

if (i == 0)

continue

str[i] = '\0'

if (access(str, 0) != 0) {

if (mkdir(str, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {

free(str)

return 1

}

}

str[i] = '/'

}

}

if (len >0 &&access(str, 0) != 0) {

if (mkdir(str, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {

free(str)

return 1

}

}

free(str)

return 0

}

int main() {

mkdir_recursively("/home/test/abc/edf")

Linux C编程获取当前时间用time这个函数,time函数会返回一个time_t类型的时间戳(这个time_t类型实际上是一个长整型,定义在time.h头文件中)。time函数的函数原型是这样的:

time_t time(time_t *tloc)

使用time函数需要包含time.h头文件:

#include <time.h>

调用time函数的代码是这样的:

time_t t

t=time((time_t *) 0)

因为time函数参数的作用和返回值一样,只是用于接收时间戳,所以这里调用time函数可以传入一个空指针,表示只用它的返回值,不用指针参数来接收时间戳。

因为time函数只是返回一个时间戳,如果想打印直观的时间信息,可以把刚才的time_t作为参数调用ctime函数,ctime函数会返回一个字符串,ctime函数的调用是这样的:

printf("The time and date is: %s", ctime(&t))

t就是刚才调用time函数返回的time_t类型变量。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8889401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存