将具有特定名称的文件复制到相应的目录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将具有特定名称的文件复制到相应的目录相关的知识,希望对你有一定的参考价值。
我在UNIX中有一个源目录,下面是文件20180401abc.txt,20180402acb.txt,20180402def.txt
在目标中有20180401,20180402之类的目录
如何将20180401abc.txt分别移动到20180401和20180402acb.txt,20180402def.txt到20180402目录。
使用下面的代码,
ls /home/source/ > filelist.txt
for line in `cat filelist.txt`
do
dir_path=`echo $line|cut -c1-8`
mkdir -p "/home/target/${dir_path}"
find /home/source/ -type f -exec cp {} /home/target/${dir_path} ;
done
#rm filelist.txt
答案
只需使用下面的脚本,它将解决您的问题: -
ls /home/source/ > filelist.txt
while read filename
do
dir_name=$(echo $line | cut -c1-8 )
dir_path="/home/target/"$dir_name
mkdir $dir_path
chmod 666 $dir_path
mv $filename $dir_path
done < filelist.txt
rm -rf filelist.txt
另一答案
$ touch 20180401abc.txt 20180402acb.txt 20180402def.txt
$ for F in *.txt; do
DIR=$(echo $F | sed -r 's/[a-z]{3}.txt$//');
mkdir -p $DIR;
mv $F $DIR/$F;
done
$ find
> ./20180402
> ./20180402/20180402acb.txt
> ./20180402/20180402def.txt
> ./20180401
> ./20180401/20180401abc.txt
另一答案
下面列出的代码正在运行:
for filename in `ls /home/source/`
do
dir_name=$(echo $filename | cut -c1-8)
dir_path="/home/target/${dir_name}"
mkdir -p $dir_path
cp /home/source/$filename $dir_path
done
以上是关于将具有特定名称的文件复制到相应的目录的主要内容,如果未能解决你的问题,请参考以下文章
如何将文件递归复制到具有特定名称的所有文件夹中(首选批处理文件)
将文件名中具有特定字符串的目录中的所有文件复制到Bash中的不同目录[关闭]