这个脚本用于解决加密文件提取的 , 懂的自然懂 不过多介绍。
脚本功能介绍
这个脚本是用来复制一个文件夹及其子文件夹和文件的结构到另一个文件夹的。它接受两个参数,分别是源文件夹和目标文件夹。它会遍历源文件夹中的所有条目,并根据条目的类型执行不同的操作:
- 如果是目录,就在目标文件夹中创建同名的目录,并递归复制该目录下的内容。
- 如果是文件,就在目标文件夹中创建同名的文件,并将源文件的内容复制到该文件中。
#!/bin/bash # 脚本需要两个参数: 源文件夹和目标文件夹 if [ "$#" -ne 2 ]; then echo "Usage: $0 source_directory target_directory" exit 1 fi src_dir="$1" tgt_dir="$2" # 如果目标文件夹不存在,则创建它 mkdir -p "$tgt_dir" # 用于递归复制文件和目录结构的函数 function copy_structure() { local src_path="$1" local tgt_path="$2" shopt -s dotglob for item in "$src_path"/*; do if [ -e "$item" ]; then # 检查条目是否存在 if [ -d "$item" ] && [ "$(basename "$item")" != "." ] && [ "$(basename "$item")" != ".." ]; then # 如果是目录, 则创建目标文件夹并递归复制 echo "Creating directory: $tgt_path/$(basename "$item")" mkdir -p "$tgt_path/$(basename "$item")" copy_structure "$item" "$tgt_path/$(basename "$item")" elif [ -f "$item" ]; then # 如果是文件, 则复制文件并保留原始文件名 local filename="$(basename -- "$item")" local extension="${filename##*.}" local name_only="${filename%.*}" if [ ! -d "$tgt_path/$name_only" ]; then echo "Copying file: $item -> $tgt_path/$name_only" touch "$tgt_path/$name_only" cat "$item" > "$tgt_path/$name_only" if [ "$extension" != "$name_only" ]; then mv "$tgt_path/$name_only" "$tgt_path/$name_only.$extension" fi fi fi fi done shopt -u dotglob } # 调用复制函数 copy_structure "$src_dir" "$tgt_dir"
使用示例
要运行这个脚本,需要在终端中输入:
bash copy_structure.sh source_directory target_directory
例如:
bash copy_structure.sh /home/user/test /home/user/backup
然后就可以看到类似下面的输出:
Creating directory: /home/user/backup/dir1 Copying file: /home/user/test/file1.txt -> /home/user/backup/file1.txt Copying file: /home/user/test/dir1/file2.jpg -> /home/user/backup/dir1/file2.jpg Creating directory: /home/user/backup/dir2 Copying file: /home/user/test/dir2/file3.pdf -> /home/user/backup/dir2/file3.pdf
文章