编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下 ?
参考回答
为了将当前目录下大于 10K 的文件转移到 /tmp
目录,我们可以使用 find
命令来查找符合条件的文件,并使用 mv
命令将它们移动到目标目录。
以下是实现该功能的 Shell 脚本:
脚本示例:
#!/bin/bash
# 当前目录和目标目录
src_dir="."
dest_dir="/tmp"
# 查找当前目录下大于10K的文件并转移
find "src_dir" -maxdepth 1 -type f -size +10k -exec mv {} "dest_dir" \;
# 输出转移完成的信息
echo "Files larger than 10K have been moved to $dest_dir."
详细讲解与拓展
find
命令的使用:find "$src_dir" -maxdepth 1 -type f -size +10k
:$src_dir
是当前目录(通过.
来表示当前目录)。-maxdepth 1
表示只查找当前目录下的文件,而不递归查找子目录。这个选项确保只处理当前目录的文件。-type f
表示查找文件,而不包括目录或其他类型的文件。-size +10k
表示查找大于 10K(即 10240 字节)的文件。
-exec mv {} "$dest_dir" \;
:对于每个符合条件的文件,执行mv
命令将其转移到/tmp
目录。{}
是find
命令的占位符,代表当前找到的文件,\;
用来结束-exec
操作。
find
命令的选项:-maxdepth 1
确保只查找当前目录,而不递归查找子目录。如果不加该选项,则会查找所有子目录中的文件。- 如果你希望查找所有子目录中的文件,可以去掉
-maxdepth 1
。
- 日志记录(可选):
- 如果希望记录转移操作的日志,可以将转移的文件路径输出到日志文件中:
find "src_dir" -maxdepth 1 -type f -size +10k -exec mv {} "dest_dir" \; >> /tmp/file_move.log
- 如果希望记录转移操作的日志,可以将转移的文件路径输出到日志文件中:
示例输出:
假设当前目录下有以下文件:
file1.txt (5K)
file2.txt (15K)
file3.txt (25K)
执行该脚本后,file2.txt
和 file3.txt
会被转移到 /tmp
目录,而 file1.txt
将不会被转移。终端输出如下:
Files larger than 10K have been moved to /tmp.
总结
该脚本通过 find
命令查找当前目录下大于 10K 的文件,并使用 mv
命令将它们转移到 /tmp
目录。可以根据需求调整文件大小限制、目录路径或其他参数。