我是一个尝试编写脚本的新手,该脚本利用包含不同文件夹(subj1,subj2,subj3 ...等)名称的文本文件,遍历每个文件夹并进入这些文件夹以提取完整路径 (即/Users/desktop/subj1/animals/pig.jpg,/Users/desktop/subj1/animals/cow.jpg),然后将主题ID和两个文件保存在3列中,分隔文本文件。 (例如,subj1 /Users/desktop/subj1/animals/pig.jpg /Users/desktop/subj1/animals/cow.jpg)等等。如何编写通过不同文件夹循环的脚本并将PATH输出保存到制表符分隔的文本文件中?
输出将如下所示:
subj1 /Users/desktop/subj1/animals/pig.jpg /Users/desktop/subj1/animals/cow.jpg
subj2 /用户/桌面/ subj2 /动物/ pig.jpg /用户/桌面/subj2/animals/cow.jpg
我试过寻找答案,但没有真正接近回答这个查询..我也需要这样做超过1000个文件夹所以尝试手动创建文件是疯狂的。
(编辑):我将不得不首先验证文件是否存在于每个文件夹内。我使用文件夹名称的文本文件创建了一个数组。这是我到目前为止:
read -r -a array <<< ${subj_numbs}
array_error_file=()
for subj in "${array[@]}"
do
echo "Working on.." \"${subj}\"
pig_file=${dir}/${subj}/animals/pig.jpg
cow_file=${dir}/${subj}/animals/cow.jpg
if [ ! -f $pig_file ] && [ ! -f $cow_file ]; then
echo " [!] Files ${pig_file} and ${cow_file} do not exist."
array_error_file+=($pig_file)
array_error_file+=($cow_file)
else
echo "Writing path names to text file.. -> \"${subj}\"
pig_path="$pig_file"; pwd
cow_path="$cow_file"; pwd
请使用命令“tree -a”显示文件夹结构。如果您没有它,请安装树形包 –
您是否知道文件存在于每个文件夹中,还是您想检查它们是否存在,然后编写完整路径?如果他们存在,任务只是组合字符串,不需要进入文件夹。如果你需要检查他们 - 我会使用'find'并根据你的喜好来格式化输出。 –
@dr_agon我已对我的帖子进行了更改,以便指定 –