【问题标题】:How to use find to bundle files如何使用 find 来捆绑文件
【发布时间】:2012-09-05 12:43:22
【问题描述】:

我正在为这项任务苦苦挣扎:

编写一个脚本,输入一个目录(路径)名称和一个 文件名基础(例如“.”、“*.txt”等)。脚本将搜索 给定目录树,查找与给定文件名匹配的所有文件,以及 将它们捆绑到一个文件中。将给定文件作为脚本执行 应该返回原始文件。

谁能帮帮我?

首先我尝试做这样的查找部分:

#!/bin/bash

filebase=$2
path=$1

find $path \( -name $base \)

然后我找到了这个bundle的代码,但我不知道如何组合它们。

for i in $@; do
 echo "echo unpacking file $i"
 echo "cat > $i <<EOF"
 cat $i
 echo "EOF"
 done

【问题讨论】:

标签: bash find bundle


【解决方案1】:

继续triplee 的评论,您可以使用shar 生成自解压存档。 您可以获取find 的输出并将其传递给shar 以生成存档。

#!/bin/bash

path="$1"
filebase="$2"
archive="$3"

find "$path" -type f -name "$filebase" | xargs shar > "$archive"

传递给find-type f 选项将搜索限制为文件(即排除目录),这似乎是必需的限制。

如果上面的脚本叫做archive_script.sh,并且是可执行的,那么你可以像下面这样调用它:

./archive_script.sh /etc '*.txt' etc-text.shar

这将为 /etc 中的所有 .txt 文件创建一个 shar 存档。

【讨论】:

    猜你喜欢
    • 2014-07-25
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 2023-02-10
    • 2021-01-07
    • 1970-01-01
    相关资源
    最近更新 更多