繁体   English   中英

如何将第N个文件写入新文件夹

[英]How to write every Nth file to new folder

我有这段代码可以扫描文件夹,并将每个文件夹中的所有文件移动到一个新文件夹。

我如何做到只有第N个文件被移动?

#!/bin/bash

# Save this file in the directory containing the folders (bb in this case)
# Then to run it, type:
# ./rencp.sh

# The first output frame number
let "frame=1"

# this is where files will go. A new directory will be created if it doesn't exist
outFolder="collected"

# print info every so many files.
feedbackFreq=250

# prefix for new files
namePrefix="ben_timelapse"

#new extension (uppercase is so ugly)
ext="jpg"

# this will make sure we only get files from camera directories
srcPattern="ND850"

mkdir -p $outFolder
for f in *${srcPattern}/*
do
mv $f `printf "$outFolder/$namePrefix.%05d.$ext" $frame`
if ! ((frame % $feedbackFreq)); then
    echo "moved and renamed $frame files to $outFolder"
fi
let "frame++"
done

相当确定我需要for f in *${srcPattern}/*编辑for f in *${srcPattern}/*的行for f in *${srcPattern}/*但是不确定正确的语法

do之后尝试使用此命令而不是mv命令:

if ! ((frame % 5)); then
  a=$((frame / 5));
  mv $f `printf "$outFolder/$namePrefix.%05d.$ext" $a`
fi

它将frame = 5,10,依此类推,移至$outFolder/$namePrefix.00001.$ext$outFolder/$namePrefix.00002.$ext等。

如果列出后ND850文件夹中的文件是连续的(即,填充的帧号),并且文件夹本身是按顺序排列的,则以下代码应该起作用。

#!/bin/bash

# Maintain a counter, and the output frame number
let "frame=1"
let "outframe=1"

outFolder="collected"

# frequency
gap=5

namePrefix="ben_timelapse"

#new extension (uppercase is so ugly)
ext="jpg"

srcPattern="ND850"

echo "Copying and renaming 1 in every $gap files"

mkdir -p "$outFolder"
for f in *${srcPattern}/*
do
if ! ((frame % $gap)); then
    outfile=`printf "$outFolder/$namePrefix.%05d.$ext" $outframe`
    cp $f "$outfile"
    echo "copied $f to $outfile"
    let "outframe++"
fi
let "frame++"
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM