SHELL脚本 移动mv指定目录中的所有文件到其他目录

递归写的,不太好看,反正能用,多担待

#!/bin/bash

function func {
for name in $1*
do
if [ -d "$name" ]
then 
#	echo "$name is a d"
	func $name/ $2 $p
elif [ -f "$name" ]
then 
	echo "$name is a file"
	c=$2${1#*$p}
	if [ -d "$c" ]
	then
		mv $name $c
	else
		mkdir -p $c
		mv $name $c
	fi
fi
done
}

p=$1
#echo "$1 $2 $p"
func $1 $2 $p

存成movefile.sh,修改权限

chmod 755 movefile.sh

然后运行,带上变量 ,第一个变量是from的绝对路径,第二个是to的绝对路径。比如:

./movefile.sh /nfs/upload/ /nfs_bak/upload/

脚本可以把/nfs/upload/下所有年_月/日期/下的文件mv到指定的/nfs_bak/upload/下,不存在的路径会自动生成后再mv

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可以使用以下 shell 脚本指定目录下带 "WWW" 前缀的文件以及其他前缀的文件移动到另一个指定目录: ``` #!/bin/bash # 定义源目录和目标目录 src_dir="/path/to/source/directory" dest_dir="/path/to/destination/directory" # 移动带 "WWW" 前缀的文件到目标目录 mv "$src_dir/WWW"* "$dest_dir/" # 移动其他前缀的文件到目标目录 mv "$src_dir/"[!W]* "$dest_dir/" ``` 上面的脚本,使用了 shell 的通配符功能,`*` 匹配任意字符,`[!W]` 匹配除了大写字母 "W" 以外的任意字符。 请注意,如果目标目录已经存在同名文件,执行 `mv` 命令时会将源文件覆盖到目标文件。如果您不想覆盖已经存在的文件,可以在执行 `mv` 命令时添加 `-n` 选项,例如 `mv -n "$src_dir/WWW"* "$dest_dir/"`。 ### 回答2: 可以使用以下的shell脚本移动指定目录下的带WWW前缀的文件以及其他前缀的文件到另一个指定目录: ```shell #!/bin/bash src_dir="/path/to/source/directory" dest_dir="/path/to/destination/directory" # 移动带WWW前缀的文件 mv "$src_dir/WWW"* "$dest_dir/" # 移动其他前缀的文件 mv "$src_dir/"* "$dest_dir/" ``` 这个脚本假定源目录只包含需要移动文件,而不包含子目录。首先,我们定义了源目录`src_dir`和目标目录`dest_dir`的路径。然后,我们使用`mv`命令来移动带WWW前缀的文件到目标目录,`"$src_dir/WWW"*`表示以WWW开头的文件名,这个通配符会匹配所有带WWW前缀的文件。接下来,我们使用`mv`命令再次移动目录的其他文件到目标目录,`"$src_dir/"*`表示匹配源目录下的所有文件。 你可以将源目录和目标目录路径替换成你实际的路径,并保存这个脚本为一个扩展名为.sh的文件。然后,你可以通过在终端运行`bash script.sh`来执行这个脚本,将带WWW前缀的文件和其他前缀的文件移动指定目录。 ### 回答3: 可以使用以下的shell脚本移动指定目录下的带WWW前缀的文件以及其他前缀的文件到另一个指定目录: ```shell #!/bin/bash # 源目录和目标目录 source_dir="/path/to/source_directory" target_dir="/path/to/target_directory" # 移动带WWW前缀的文件到目标目录 mv "${source_dir}/WWW"* "${target_dir}" # 移动其他前缀的文件到目标目录 mv "${source_dir}/"*[!WWW]* "${target_dir}" ``` 上述脚本,需要将`/path/to/source_directory`替换为源目录的实际路径,将`/path/to/target_directory`替换为目标目录的实际路径。 该脚本使用`mv`命令分别移动带WWW前缀的文件和其他前缀的文件到目标目录。`"${source_dir}/WWW"*`表示带WWW前缀的文件,`"${source_dir}/"*[!WWW]*`表示其他前缀的文件。`${target_dir}`为目标目录路径。 请注意,上述脚本假设目标目录已存在,如果目标目录不存在,可以使用`mkdir`命令在脚本之前创建目标目录。 希望以上回答对您有帮助。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值