我正在学习如何在终端中使用Linux命令并查找/重命名大文件。作为第一次尝试
find . -type f +size 1G
给出了这条消息
find:路径必须在表达式之前:+ size用法:find [-H] [-L] [-P] [-Olevel] [-D help | tree | search | stat | rates | opt | exec] [path ...] [表达式]
的最佳方法是什么?
提前致谢,Karlo
答案 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
我怀疑你可能已经知道了很多,但我希望它有所帮助。