我有一个用于Linux的Shell脚本,该脚本位于基本级别的文件夹testing
中,并将进入original
目录,将所有内容复制到input
文件夹中,然后在每个文件夹中input
中的子目录执行三个任务:
tip
的新文件夹tip
sorted
的新文件夹当我在命令行上对其进行测试时,我得到的唯一问题是,由于我在将所有内容移动到其中之前都创建了tip
文件夹,因此它弹回了一个错误,提示它无法在其内部移动文件夹-随便吧。但是,当我在NiFi中运行它时,它给了我一个不同的错误(cannot create directory tip: file exists
),并且表现不同。
脚本
#!/bin/bash
# copy to input while maintaining file structure
cd /data/testing/original
cp -r * /data/testing/input
cd /data/testing/input
# for each subfolder in input, create tip & sorted, and move all of the original stuff into tip
for dir in /data/testing/input/*
do
test -d "$dir" || continue
cd "$dir" && mkdir tip && mv * tip/
mkdir sorted
done
每个子文件夹中的预期输出 /data/testing/input/subfolder/
sorted -> empty
tip -> media folder, file1, file2
实际输出
sorted -> empty
tip -> media folder, file1, file2
media folder
file1
file2
我在做什么错了?
答案 0 :(得分:0)
shopt -s extglob
# trailing slash forces the results to be dirs
# ..............................v
for dir in /data/testing/input/*/; do
(
cd "$dir" && mkdir tip sorted && mv -t tip/ !(tip|sorted)
# ..........................................^^^^^^^^^^^^^
# anything *not* matching "tip" or "sorted"
)
# run above in a subshell so you don't have to cd back to parent dir
done