我有数千个用于存储某些文件的文件夹,并且(这些文件夹)以以下方式命名:
0.01
0.02
.
.
.
1.01
.
.
.
通常,我会使用cp -r {1..1000} some/destination
,但是尝试执行cp -r {0.01..0.21} some/destination
无效。
还可以,如果我只想复制第五个文件夹吗?
0.05
0.1
0.15
.
.
.
再一次,文件将位于数组中,并以特定的数字结尾,例如1.2
。
答案 0 :(得分:1)
使用seq
命令:
seq [OPTION]... FIRST INCREMENT LAST
-f, --format=FORMAT
使用printf
样式的浮点数FORMAT
来源:
man seq
因此,所有文件夹:
cp -r $(seq 0.01 0.01 0.21) some/destination
如果您只想复制第5个文件夹:
cp -r $(seq 0.05 0.05 0.21) some/destination
但是,此seq将创建一个文件夹名称列表,其名称类似于2.00。如果您不希望尾随零,则需要通过添加标志-f '%g'
答案 1 :(得分:1)
可能最好使用数组,这样就可以解决不遵循严格顺序的文件夹问题,尽管这不像每次cp
时复制多个目录那样有效,就像{{ 3}}答案:
dirs=(*.*/) # get list of directories into an array
n=0
for dir in "${dirs[@]}"; do # traverse the array
(( ++n % 5 == 0 )) || continue # skip if it is not the 5th
cp -r -- "$dir" "$dest" # copy!
done