Linux 脚本从多个目录移动文件

Linux 脚本从多个目录移动文件

我正在尝试创建一个脚本,将文件放置在目录中后移动到子目录中
示例
文件放置在/home/userA/directory1移动到/home/userA/directory1/directory2

我必须对所有users以下内容重复此操作,如果不存在则/home必须跳过该用户。directory2

我的脚本目前为止

#!/bin/bash

directory="/home/*/directory1"
directory2="/home/*/directory1/directory2/."

if [ $(ls -1A $directory | wc -l) -gt 0 ] ;
then
find $directory -type f -exec rsync --remove-source-files {} $directory2  \; &>/dev/null ;
fi

我对上述脚本存在的问题是,它将所有文件移动到其中一个文件中directory2

答案1

我假设在某些用户的主目录中存在一个名为的目录d1,该目录内有一个名为的子目录d2

我想你想做类似的事情

#!/bin/bash
for i in /home/*/d1 ; do
    if [ -d "$i/d2" ]; then
     # echo  "$i/d2"
     find  "$i" -maxdepth 1 -type f -exec mv {} "$i/d2" \;
    fi
done

笔记:

  • 如果在真实姓名中d1有一些空间,您需要做更多的锻炼并用保护它们\(这样您就可以写for i in /home/*/directory\ with\ spaces; do)。
  • 尝试echo $directory2 ; exit用之前的脚本编写,你就会明白为什么它的行为与你的预期不同。更多信息文件名扩展

相关内容