为了账号安全,请及时绑定邮箱和手机立即绑定

编写个shell脚本将/usr/local/test目录下大于100K的文件转移到/tmp目录下

http://img1.sycdn.imooc.com//57f7a81100012ee306850252.jpg

感觉这个脚本不对,然后能说出每一行的意思吗?麻烦给出正确的答案,感谢!

正在回答

4 回答

使用一条find命令就可以了

find /usr/local/test/ -size +100k -exec mv {} /tmp \;

如果只需要移动文件不移动目录,find /usr/local/test/ -size +100k -type f -exec mv {} /tmp \;

1 回复 有任何疑惑可以回复我~
#1

Motoc16 提问者

只不过要求到shell编写的,所以想知道
2016-10-08 回复 有任何疑惑可以回复我~
#2

掌上观石 回复 Motoc16 提问者

直接把上条命令写入脚本接可以了,o(╯□╰)o
2016-10-08 回复 有任何疑惑可以回复我~

你用的手机吧,用大点的例如平板,或者电脑显示器,分辨率高的显示的清。

0 回复 有任何疑惑可以回复我~
如果不允许使用find,必须用脚本实现:
#!/bin/bash
ls -al /usr/local/test > ./temp.txt  #将目录中的ls信息输出到temp.txt
touch 1.txt move2tmp.txt   #创建两个文件备用
sed 's/[[:space:]]\+/\*/g' ./temp.txt > 1.txt  #将文件文本中的单个或连续空格替换为*,备用
for i in `cat 1.txt`;do
        declare -i size=`echo $i | awk -F'*' '{print $5}'`   #通过*分割每一行中的内容 取出第五个字段(文件大小),也可以用cut -d
        if [ $size -gt 100000 ];then
                filename=`echo $i | awk -F'*' '{print $NF}'`  #如果大小大于100k,取得其文件名
                mv $filename /tmp   #将该文件移到tmp目录下
                echo $filename>>move2tmp.txt   #记录移动的文件
        else
                continue
        fi
done
rm -f 1.txt biglog.txt temp.txt  #删除用过的临时文件,保留文件移动移动记录move2tmp.txt


0 回复 有任何疑惑可以回复我~

用find命令是个好方法,这里学习了,

不过如果是仅仅查找/usr/local/test目录而不查找其内的字目录的话,则不建议用find命令,因为find命令是在目录结构中搜索文件和目录,并执行指定的操作,也就是说find会对目录内的所有文件和目录及其字目录进行全部搜索,则如楼上所说的用find则会对/usr/local/test目录及其字目录字字目录都进行查找出大于100k的文件然后都进行移动到/tmp。

举例如下,

[root@rhel7 test]# ll -h

total 1.5M

drwxr-xr-x. 3 root root   61 Feb 13 20:56 abrt

-rw-r--r--. 1 root root  32K Feb 13 20:43 meta.db-shm

-rw-r--r--. 1 root root 1.4M Feb 13 20:43 meta.db-wal

drwxr-xr-x. 2 root root 4.0K Feb 13 20:43 tracker

[root@rhel7 test]# find ./ -size 100k

[root@rhel7 test]# find ./ -size 100k -type f

[root@rhel7 test]# find ./ -size 100k -type f -pint

find: unknown predicate `-pint'

[root@rhel7 test]# find ./ -size 100k -type f -print

[root@rhel7 test]# find ./ -size +100k -type f

./meta.db-wal

./tracker/meta.db

./tracker/meta.db-wal

./tracker/ontologies.gvdb

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

编写个shell脚本将/usr/local/test目录下大于100K的文件转移到/tmp目录下

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信