我想编写一个 shell 脚本,以便将给定目录及其所有子目录中以 .tif 结尾的所有文件写入 csv 文件。
该目录包含各种子目录,这些子目录也可以包含 .zip 文件夹,因此脚本也应该能够从 zip 文件夹中提取名称。
我首先考虑将这些步骤分开(解压缩并获取文件名),但我不确定这是否真的有必要。
由于我对使用 Shell 非常陌生,因此将不胜感激。
要搜索.tif文件夹及其子文件夹中的文件,然后将输出写入.csv文件,您可以使用以下命令:
find /path/to/folder -iname '*.tif' -type f >tif_filenames.csv
Run Code Online (Sandbox Code Playgroud)
要在.zip文件内部也搜索并将输出附加到前一个tif_filenames.csv文件,您可以使用:
find /path/to/folder -iname '*.zip' -type f -exec unzip -l '{}' \; | process
Run Code Online (Sandbox Code Playgroud)
process以下 bash 函数在哪里:
function process() {
while read line; do
if [[ "$line" =~ ^Archive:\s*(.*) ]] ; then
ar="${BASH_REMATCH[1]}"
elif [[ "$line" =~ \s*([^ ]*\.tif)$ ]] ; then
echo "${ar}: ${BASH_REMATCH[1]}"
fi
done
}
Run Code Online (Sandbox Code Playgroud)
来源:https : //unix.stackexchange.com/a/12048/37944
| 归档时间: |
|
| 查看次数: |
12833 次 |
| 最近记录: |