将文件与文件夹匹配

将文件与文件夹匹配

linux 可以扫描两个目录吗?扫描后根据文件名的相似性匹配两个目录并传输文件。

我希望将文件“目录”/seq0001.pdf 传输到文件夹“不同目录”/001,将“目录”/seq0002.pdf 传输到文件夹“不同目录”/002 等

当创建新的递增文件编号时,我想将该新文件移动到新目录。

无需创建新文件夹。因为当有新文件时,其他工作就是将信息放入此文件夹并创建新文件夹。

我知道如何执行直接移动功能,但这仅适用于指定的文件。您能否通过匹配来移动文件,而不必每次都手动移动文件?

答案1

可能有办法缩短这个时间(实际上,有很多很好的方法来解析文件名;请查看这个问题- 我会尽快在这里更新),但一种方法是首先创建一个处理单个文件的脚本。例如,将以下内容另存为move.sh

#!/bin/sh
subdir=`echo -n "${1%.*}" | tail -c3`
mv -v "$1" "/path/to/$subdir"

根据个人喜好进行调整。这将取文件名中最后一个“.”之前的部分,并使用最右边的三个字符作为目标目录(例如,“seq0002.pdf”转到“/path/to/002”)。

使其chmod 755 move.sh可执行。

我建议将该脚本放在不同的目录中,这样它就不会干扰。然后您可以使用 egfind在所有文件上执行它,或者一次只在一个文件上运行它,例如:

find . -maxdepth 1 -type f -exec /wherever/move.sh {} \;

或者对于一个文件(假设 move.sh 在当前目录中):

./move.sh seq0001.pdf

如果您想选择更复杂的路径,您可以扩展脚本,例如:

#!/bin/sh
subdir=`echo -n "${1%.*}" | tail -c3`

if [ $subdir = "001" ] ; then
    rootdir="/directory";
elif [ $subdir = "002" ] ; then
    rootdir="/another/place";
else
    rootdir="/default/root";
fi

mv -v "$1" "$rootdir/$subdir"

再次调整口味。可能性是无限的。

相关内容