使用文件名创建目录并将文件移动到其各自的文件夹

使用文件名创建目录并将文件移动到其各自的文件夹

我的问题与以下问题有点不同:

使用文件名创建目录并将文件移动到其各自的文件夹

因为在同一个文件夹中,我有每个文件的两个相似副本,例如:

001.txt 和 001(1).txt

……

100.txt 和 100(1).txt

对于每两个相似的副本,创建一个文件夹并将两个相似的副本移至一个文件夹中。 001.txt和001(1).txt放入001文件夹

基于上述问题,但不起作用。上述问题的命令:

set -o errexit -o nounset
cd ~/myfolder
for file in *.txt
do
    dir="${file%.txt}"
    mkdir -- "$dir"
    mv -- "$file" "$dir"
done

试过:

set -o errexit -o nounset
cd ~/myfolder

for file in *(1).txt
do
    dir="${file%.txt}"
    mkdir -- "$dir"
    mv -- "$file" "$dir"
done

此命令将为每个文件创建文件夹。

有什么建议可以区分 001.txt 和 001(1).txt 这样的文件,以便我们可以选择所需的文件来创建一个文件夹,然后运行另一个命令来归档相同的目标?

答案1

你快到了。您缺少的是,您还需要尝试从文件名中删除括号内的数字以派生目录:

#!/bin/sh
for file in *.txt
do
    dir="${file%.txt}"         # Remove suffix
    dir="${dir%(*)}"           # Remove bracketed suffix if present

    mkdir -p -- "$dir"         # Create if necessary
    mv -f -- "$file" "$dir"    # Move the file
done

mkdir您可以在和前面添加前缀,mvecho查看在执行操作之前会发生什么。

相关内容