如何使用find来捆绑文件

时间:2012-09-05 12:43:22

标签: bash find bundle

我正在努力完成这项任务:

  

编写一个脚本,将目录(路径)名称和a作为输入   文件名基础(例如“。”,“* .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

1 个答案:

答案 0 :(得分:1)

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

#!/bin/bash

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

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

传递给-type f的{​​{1}}选项会将搜索限制为文件(即排除目录),这似乎是一个必要的限制。

如果上面的脚本被称为find,并且是可执行的,那么您可以按如下方式调用它,例如:

archive_script.sh

这将在/ etc。

中创建所有.txt文件的./archive_script.sh /etc '*.txt' etc-text.shar 存档