找到文件的模式,用该模式创建一个文件夹,并将文件复制到该文件夹中——Bash脚本



我有一个任务,要找到文件的模式,用模式名称创建一个文件夹,并将文件复制到该文件夹。我可以创建文件夹。


folders=`find /Location -type f -name "*.pdf" -printf "%fn" | cut -f 1 -d '_' | sort -u`
for i in $folders
do
    mkdir -p /LocationToCreateTheFolder/$i
done

无法进一步了解如何复制文件。

也许可以试试?

for i in $folders do mkdir -p /LocationToCreateTheFolder/$i && cp ./$i.pdf ./$i/ 

这将进行查找和复制:

find Location -type f -name '*.pdf' -exec bash -c 'f=${1##*/}; d="LocationToCreateTheFolder/${f%%_*}"; mkdir -p "$d" && cp "$1" "$d"' None {} ;

这对于困难的文件名是安全的,即使是名称中包含空格、制表符或换行符的文件名。

它的工作原理

  • find Location -type f -name '*.pdf' -exec bash -c '...'无{}\;

    这将在目录Location下找到pdf文件,对于找到的每个文件,'...'内的bash命令将在$1设置为找到的文件名的情况下执行。($0设置为None。我们不使用$0。(

  • f=${1##*/}

    这将从文件名中删除目录名。这是前缀删除的一个示例:$1中的所有内容(包括最后一个/(都将被删除。

  • d="LocationToCreateTheFolder/${f%%_*}"

    这将创建要将文件发送到的目录的名称。

    ${f%%_*}"后缀删除的一个示例。从第一个CCD_ 14及其后的CCD_。

  • mkdir -p "$d" && cp "$1" "$d"

    这样可以确保目录存在,然后将文件复制到其中

相关内容

  • 没有找到相关文章

最新更新