编写个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."

详细讲解与拓展

  1. 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 操作。
  2. find 命令的选项:
    • -maxdepth 1 确保只查找当前目录,而不递归查找子目录。如果不加该选项,则会查找所有子目录中的文件。
    • 如果你希望查找所有子目录中的文件,可以去掉 -maxdepth 1
  3. 日志记录(可选):
    • 如果希望记录转移操作的日志,可以将转移的文件路径输出到日志文件中:
      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.txtfile3.txt 会被转移到 /tmp 目录,而 file1.txt 将不会被转移。终端输出如下:

Files larger than 10K have been moved to /tmp.

总结

该脚本通过 find 命令查找当前目录下大于 10K 的文件,并使用 mv 命令将它们转移到 /tmp 目录。可以根据需求调整文件大小限制、目录路径或其他参数。

发表评论

后才能评论