首页 > 解决方案 > 如果文件夹名称在bash中的变量中,如何遍历文件夹中的所有pdf文件?

问题描述

我有两个文件夹 original_images 和 pdf_backup。这些文件夹包含 pdf 文件,如果我将该位置保存在变量中,如何循环遍历所有 pdf 文件。

if some count > 10 
  location=/home/BACKUP/teamshare2/my\ Raw\ Data/"$1"/"$2"/"$3"/original_images/*.pdf
else
  location=/home/BACKUP/teamshare2/my\ Raw\ Data/"$1"/"$2"/"$3"/pdf_backup/*.pdf
for f in $location
      ---pdf files---

当我这样做时,for loop没有执行,但是如果我直接给出该路径意味着循环正在执行。为什么会这样?我该如何解决这个问题?先感谢您

标签: bash

解决方案


不要将通配符存储在变量中;只需将路径的固定部分存储在变量中,将对它的引用放在双引号中,这样它就不会被路径中的空格混淆,然后将通配符部分不带引号:

if some count > 10 
  location="/home/BACKUP/teamshare2/my Raw Data/$1/$2/$3/original_images"
else
  location="/home/BACKUP/teamshare2/my Raw Data/$1/$2/$3/pdf_backup"
for f in "$location"/*.pdf

(注意:我还切换到更简单的全双引号格式设置location,而不是混合转义和双引号。)


推荐阅读