gpt4 book ai didi

linux - 通过 bash 将文件从一个目录排序并复制到另一个目录

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:32:43 25 4
gpt4 key购买 nike

我在一个目录中有大约 400 万个无扩展名的文件。

我需要一个 bash 脚本将它们复制到另一个目录,这样这些文件将被分类为每个目录 1000 个文件。

例如。源目录是 /temp/hugenoofffiles/

文件名如m_100、m_1005、m_10005

目标目录是 /temp/sortedfiles/

在目标目录中,应创建一个名为 1 的目录,其中包含从 m_1m_999 的文件。

目录 2 应创建包含文件 m_1000m_1999 等等。

目标文件应重命名为 1_m、1000_m

另外,如果目标文件夹中的文件已经存在,那么它们应该被覆盖。

请帮忙。

最佳答案

#!/bin/bash

SOURCE='/temp/hugenooffiles'
DEST='/temp/sortedfiles'

I=0
for FILE in "$SOURCE"/m_*; do
(( D = 1 + ++I / 1000 ))
[[ -d $DEST/$D ]] || mkdir -p "$DEST/$D" ## You can just skip dir checking but that would be slow.
cp -v "$FILE" "$DEST/$D/m_$I"
done

注意:默认情况下,Bash 中的路径名扩展 ("$SOURCE"/m_*) 是排序的。

关于linux - 通过 bash 将文件从一个目录排序并复制到另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24283226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com