我有一个文本文件,其中包含如下文件列表:
A file1.gz file2.gz
B file3.gz file4.gz
C file5.gz file6.gz
D file7.gz file8.gz
...
A,B,C,D, ...
是位于第一列的样本的名称,我想创建带有样本名称的子目录,并将每个样本的相关文件(位于第二和第三列)移动到其中自己的目录。我怎样才能做这个循环呢?
答案 0 :(得分:1)
当textfile
中的字段与空格分隔(并且您的目录和文件名没有空格)时,您可以使用
while read -r dir file1 file2; do
mkdir -p "${dir}"
if [ ! -d "${dir}" ]; then
echo "Something strange with ${dir}, I do not know what to do."
exit 1
fi
if [ -f "${file1}" ]; then
mv "${file1}" "${dir}"
fi
if [ -f "${file2}" ]; then
mv "${file2}" "${dir}"
fi
done < textfile
这将适用于固定的nr列。如果要在每一行上支持未知的nr个文件,则必须稍微更改一下:
while read -r dir files; do
mkdir -p "${dir}"
if [ ! -d "${dir}" ]; then
echo "Something strange with ${dir}, I do not know what to do."
exit 1
fi
for file in ${files}; do
if [ -f "${file}" ]; then
mv "${file}" "${dir}"
fi
done
done < textfile