将所有具有匹配前缀的文件移动到基于csv列表的文件夹中

阮清(Thanh Nguyen)

我有成千上万个带有各种前缀的文件,这些前缀被分组在一个csv列表中。现在,我要根据他们的列表将它们全部移动到他们的文件夹中。

例如:文件A1B1C1 _ {...}。png,A1B2C2 _ {...}。png,A1B1C3 _ {...}。png等。CSV列表:

Name   Group
A1B1C1 John
A2B1C1 John
A1B2C2 Denver
A1B1C3 Nick

现在,我想将所有带有A1B1C1_和A2B1C1_前缀的文件移至John文件夹,将A1B2C2_前缀移至Denver文件夹,将A1B1C3_前缀移至Nick文件夹。

我在想

for group in *_*.csv; 
 do {...}

但是我不确定如何从csv文件中读取列表以及如何从列表语法中移动文件。

我正在使用CentOS,非常感谢。

库萨兰达
awk 'NR > 1 { print $1, $2 }' list.csv |
while read -r prefix group; do
    find . -type f -name "$prefix*" -exec sh -c '
        group="$1"; shift
        mkdir -p "$group"
        for name do echo mv "$name" "$group"; done' sh "$group" {} +
done

这将用来awk为while循环提供前缀和组名(跳过列表文件的文件头)。假定所有前缀和组名中都没有空格或制表符。

while循环调用find以查找当前目录中或目录之下的所有常规文件,这些文件的名称均以给定的前缀开头。对于所有此类文件,将调用以下简短的shell脚本:

group="$1"
shift

mkdir -p "$group"
for name do
    echo mv "$name" "$group"
done

该脚本期望组名是命令行上的第一个参数,其余参数是要移至该组目录的文件的路径名。

该脚本在当前工作目录中创建组目录(如果尚不存在),然后循环遍历给定的路径名​​,将每个文件移到适当的位置。不检查文件是否被覆盖。

echo保护mv的实际运行。运行代码以echo确保其正常工作,然后删除echo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将所有与模式匹配的文件移动到文件夹中?

将子文件夹中的所有文件移动到父文件夹

将子文件夹中的所有文件移动到父文件夹

将所有文件夹和文件移动到目录Linux中具有相同主题名称的文件夹

将文件移动到有例外的文件夹中

如何使用bash将子文件夹中的所有文件移动到新文件夹中?

Shell脚本将所有文件从子文件夹移动到父文件夹

将嵌套文件夹的所有文件移动到其他文件夹

如何将文件移动到具有相同名称的相应文件夹中?

将文件移动到具有几乎相同模式的特定文件夹中

将具有特定语言的媒体文件移动到特定文件夹中

AppleScript - 将子文件夹中包含的所有文件移动到顶级文件夹

如何将当前文件夹中的所有文件移动到子文件夹?

将包含字符串的所有文件从多个子文件夹移动到父文件夹中

PowerShell:将所有文件从子文件夹中的相同类型移动到子子文件夹

Windows-如何将子文件夹中的所有文件移动到父文件夹?

Linux在文件夹中查找文件并将其移动到具有时间前缀的新位置

将所有在<time>之后修改的文件夹移动到新文件夹

如何将所有同级文件夹移动到一个文件夹中?

将“视频”文件夹移动到HDD并在SSD中具有它的链接

将文件从单个文件夹移动到具有文件名等名称的现有文件夹

SSIS-动态将文件移动到具有匹配子字符串名称的文件夹

如何将分散在文件系统中的所有同名文件移动到一个文件夹中?

如何将具有相似文件名的文件移动到 Python 中的新文件夹中

python:我可以将基于名称一部分的文件移动到具有该名称的文件夹中

将除一个子文件夹外的所有子文件夹移动到该子文件夹中

删除文件夹中除具有某些前缀的文件外的所有文件

将具有相同名称的多个文件移动到以文件路径命名的新文件夹中

Gulp 缩小所有 css/js 并移动到具有相同结构的文件夹?