![将文件与文件夹匹配](https://linux22.com/image/1413042/%E5%B0%86%E6%96%87%E4%BB%B6%E4%B8%8E%E6%96%87%E4%BB%B6%E5%A4%B9%E5%8C%B9%E9%85%8D.png)
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"
再次调整口味。可能性是无限的。