我有一个包含8000+拟合文件的目录,我想知道是否有办法将它们的增量复制到其他目录,这样我就可以拥有8个目录,其中每个目录大约有1000个拟合文件,或者有2000个目录适合文件?
答案 0 :(得分:2)
这样的事情可以做到:
dir=1
counter=1
for file in spec*
do
echo "cp $file dir_$dir"
((counter++))
(( $counter%1000 == 1 )) && ((dir++))
done
dir=1
和counter=1
正在设置变量。for file in spec*
循环遍历spec*
模式名称文件。echo "cp $file dir_$dir"
将输出cp spec123 dir_1
/ dir_2,...我使用了echo
,以便您可以在继续之前检查行为并执行正确的cp
。< / LI>
((counter++))
会增加counter
变量计数器。(( $counter%1000 == 1 )) && ((dir++))
如果$counter
位于表单1000K + 1上,请增加$dir
的值。答案 1 :(得分:0)
要扩展fedorqui编写的脚本以满足您的需要,您可以执行以下操作:
创建一个文件,
$ nano mycopy.sh
(您可以选择自己的名字)
粘贴以下内容并保存文件:
source=$1
dir=1
counter=1
mkdir dir_$dir
for file in `ls $source`
do
cp -r $source$file dir_$dir/
((counter++))
(( $counter%1000 == 1 )) && ((dir++)) && ((`mkdir dir_$dir`))
done
通过
使您的文件可执行$ chmod u+x mycopy.sh
现在通过运行
执行脚本$ ./mycopy.sh MyDirectoryWithManyFiles/
其中MyDirectoryWithManyFiles /是包含文件的目录
该脚本将创建子目录并在其中最多复制1000个文件
答案 2 :(得分:0)
以下是在Python中执行此操作的方法:
创建一个名为“manage_files.py
”的新文件,将此代码放入其中:
# Hat-tip to http://stackoverflow.com/questions/3964681/find-all-files-in-directory-with-extension-txt-with-python
import os
import glob
from subprocess import call
# Initialise
my_dir = 'files_are_here'
num_files = 10
# Get a list of all files in my_dir
os.chdir(my_dir)
all_files = glob.glob('*')
for i in range((len(all_files) / num_files) + 1):
files = all_files[i * num_files:(i + 1) * num_files]
dirname = "dir_%s" % i
call(["mkdir", dirname])
file_names = ' '.join(files)
arg = ['mv', '-t', '%s/' % dirname]
arg.extend(files)
call(arg)
然后,从Linux shell类型python manage_files.py
开始,魔法会做它的东西。