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

来源:1-2 Linux中ACL权限查看与设定

Motoc16

2016-10-07 21:52

http://img.mukewang.com/57f7a81100012ee306850252.jpg

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

写回答 关注

4回答

  • 掌上观石
    2016-10-08 10:01:09
    已采纳

    使用一条find命令就可以了

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

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

    掌上观石 回复Motoc1...

    直接把上条命令写入脚本接可以了,o(╯□╰)o

    2016-10-08 13:55:19

    共 2 条回复 >

  • 慕移动9181930
    2022-03-27 01:19:46

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

  • Rammsteins
    2020-08-27 12:05:18
    如果不允许使用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


  • 慕粉2050297597
    2017-02-13 21:14:08

    用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

Linux权限管理之特殊权限

本Linux教程一定会让你对Linux中的权限有更深刻的认识

33275 学习 · 69 问题

查看课程

相似问题