在Linux中查找/重命名大文件

时间:2015-09-11 15:00:12

标签: linux file size

我正在学习如何在终端中使用Linux命令并查找/重命名大文件。作为第一次尝试

find . -type f +size 1G

给出了这条消息

  

find:路径必须在表达式之前:+ size用法:find [-H] [-L] [-P]   [-Olevel] [-D help | tree | search | stat | rates | opt | exec] [path ...]   [表达式]

的最佳方法是什么?
  1. 查找/重命名大文件
  2. 将它们移至特定文件夹
  3. 提前致谢,Karlo

2 个答案:

答案 0 :(得分:2)

查找大于1G的所有文件:

找到。 -type f -size + 1G

您可以通过添加“-exec”选项对所选文件执行命令。例如:

回显文件名(结果类似于-print): 找 。 -type f -size + 1G -exec echo'{}'\;

在文件中添加后缀_Ren: 找 。 -type f -size + 1G -exec mv'{}''{} _Ren'\;

将文件移至临时文件夹: 找 。 -type f -size + 1G -exec mv'{}'/ tmp \;

答案 1 :(得分:0)

你快到了,使用:

find /home/* -size +1G -print    

看看是否能让你更接近你所追求的目标。

编辑: 以下应该执行您想要的操作并处理目录和文件名中的空格。

#!/bin/bash
# $1 is path to search, $2 greater than size in Gb to search for, $3 destination
IFS=$'\n'
for x in `find $1 -size +$2G -print`
        do
                y=`basename "$x"`
                echo "$x" "being copied to " $3/copy_"$y"
                mv "$x" $3/copy_"$y"
        done

请注意,文本copy_可以修改为您想要用于重命名文件的任何内容,或者您​​可以在命令行中将其作为第4个参数并将代码更改为读取$3/$4"$y"

将代码(从#!/ bin / bash行到结尾)放入文件中,我们称之为bigfind.sh
然后chmod + x bigfind.sh
这将允许您执行脚本
让我们假设您要在/ home / karlo中查找大文件,它们应该大于1Gb并且您希望将它们移动到/ home / public
你的命令(假设你当前在/ home / karlo,你的脚本bigfind.sh也在那个目录中)将是:
./bigfind.sh ./ 1 / home / public

./bigfind.sh / home / karlo 1 / home / public
我在根目录(/)中,例如,命令是:
/home/karlo/bigfind.sh / home / karlo 1 / home / public

我怀疑你可能已经知道了很多,但我希望它有所帮助。