bash – 搜索复制的作业
发布时间:2020-12-15 22:23:58 所属栏目:安全 来源:网络整理
导读:有时我的学生会尝试为他们的作业提交相同的文件.如果他们自己做了功课,那么任何两个文件都不可能完全相同. 我把作业放在这样安排的文件夹中:/ section / id / 这样,课程的每个部分都有自己的文件夹,每个学生都有自己的文件夹,所有文件都在最后一级.学生档案
有时我的学生会尝试为他们的作业提交相同的文件.如果他们自己做了功课,那么任何两个文件都不可能完全相同.
我把作业放在这样安排的文件夹中:/ section / id / 这样,课程的每个部分都有自己的文件夹,每个学生都有自己的文件夹,所有文件都在最后一级.学生档案有多种格式. >如何检查任何子文件夹中是否存在完全相同的文件(忽略文件名)? 解决方法
这可以帮助您使用以下for循环和awk one-liner识别学生完全相同的文件:
步骤:1 – 对于i in path / to / files;做cksum“$i”;完成> cksum.txt 测试: 学生2使用与学生1相同的文件的一些示例文件 [jaypal:~/Temp/homework] ls -lrt total 32 -rw-r--r-- 1 jaypalsingh staff 10 17 Dec 17:58 student1 -rw-r--r-- 1 jaypalsingh staff 10 17 Dec 17:58 student2 -rw-r--r-- 1 jaypalsingh staff 10 17 Dec 17:58 student3 -rw-r--r-- 1 jaypalsingh staff 10 17 Dec 17:58 student4 [jaypal:~/Temp/homework] cat student1 homework1 [jaypal:~/Temp/homework] cat student2 homework1 [jaypal:~/Temp/homework] cat student3 homework3 [jaypal:~/Temp/homework] cat student4 homework4 步骤1: 使用cksum实用程序创建cksum.txt文件 [jaypal:~/Temp/homework] for i in *; do cksum "$i"; done > cksum.txt [jaypal:~/Temp/homework] cat cksum.txt 4294967295 0 cksum.txt 1271506813 10 student1 1271506813 10 student2 1215889011 10 student3 1299429862 10 student4 第2步: 使用awk one-liner识别所有相同的文件 [jaypal:~/Temp/homework] awk 'NR==FNR && a[$1]++ { b[$1]; next } $1 in b' cksum.txt cksum.txt 1271506813 10 student1 1271506813 10 student2 测试2: [jaypal:~/Temp/homework] for i in stu*; do cksum "$i"; done > cksum.txt [jaypal:~/Temp/homework] awk 'NR==FNR && a[$1]++ { b[$1]; next } $1 in b' cksum.txt cksum.txt 1271506813 10 student1 1271506813 10 student2 1271506813 10 student5 [jaypal:~/Temp/homework] cat student5 homework1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |