我想在一个目录中找到重复的文件,然后删除除一个之外的所有文件,以回收空间。如何使用 shell 脚本实现这一点?
例如:
pwd
folder
Run Code Online (Sandbox Code Playgroud)
里面的文件是:
log.bkp
log
extract.bkp
extract
Run Code Online (Sandbox Code Playgroud)
我需要将 log.bkp 与所有其他文件进行比较,如果发现重复文件(通过其内容),我需要将其删除。同样,文件“log”必须与所有其他文件一起检查,以此类推。
到目前为止,我已经写了这个,但它没有给出预期的结果。
#!/usr/bin/env ksh
count=`ls -ltrh /folder | grep '^-'|wc -l`
for i in `/folder/*`
do
for (( j=i+1; j<=count; j++ ))
do
echo "Current two files are $i and $j"
sdiff -s $i $j
if [ `echo $?` -eq 0 ]
then
echo "Contents of $i and $j are same"
fi
done
done
Run Code Online (Sandbox Code Playgroud) 我正在通过以 root 身份运行此脚本来测试我的文件是否具有读取权限:
#!/usr/bin/env bash
FILE="/etc/shadow"
if ! [ -r $FILE ]; then
echo "Hello"
fi
exit 0
Run Code Online (Sandbox Code Playgroud)
理想情况下,脚本必须打印,Hello
因为没有读取权限。但是,这并没有发生。
ls -ltrh /etc/shadow
---------- 1 root root 7.1K Jun 7 06:59 /etc/shadow
Run Code Online (Sandbox Code Playgroud)
脚本中需要修改什么?