Shell 将文件移动到特定文件夹的脚本
Shell Script for moving files to a specific Folder
也许有人能给我指出正确的方向:
我想将某些以特定类型命名的文件(例如 file%AA)移动到我的存档中的镜像位置。
所以例如我有以下内容:
livefolder/folder1/file%AA.csv
并想将其移动到
archivefolder/folder1/file%AA.csv
当存档文件夹不存在时,应该创建它。
我怎样才能做到这一点?
目前我坚持这个:
find /livefolder/folder1/ -type d \( -name '*%AA' \) -exec mv {} /archivefolder/folder1/ +
但是我需要对存在的每个子文件夹执行此操作。有没有办法对所有子文件夹递归执行此操作?
我希望有人能指出我正确的方向。
提前致谢!
正如 Barmer 和 Renaud 在评论中提到的,您可以使用 rsync。如果使用 --relative
选项时 subdirectories
不存在,它将在路径中创建它。但是您需要存在父目录(不幸的是,在您的情况下 archivefolder
)。无论如何,您可以使用 mkdir -p
创建它(-p
只会创建一个目录,如果它不存在)。
rsync
命令将如下所示:
rsync -a --relative livefolder/./folder1/file%AA.csv archivefolder
relative
将根据您提供的 source
在 destination
中设置路径。
即等于
rsync [options] livefolder/folder1/file%AA.csv archivefolder/folder1/file%AA.csv
我们应该在 rsync 命令 (rsync -a --relative livefolder/./folder1/file%AA.csv
) 的源路径中的 livefolder
之后使用 .
。这意味着在给定的目标路径中,rsync 将以 /folder1/file%AA.csv
格式复制(即遵循源中 .
之后提到的层次结构)。因此,这将在 archivefolder
.
中创建 folder1/file%AA.csv
也许有人能给我指出正确的方向: 我想将某些以特定类型命名的文件(例如 file%AA)移动到我的存档中的镜像位置。 所以例如我有以下内容:
livefolder/folder1/file%AA.csv
并想将其移动到
archivefolder/folder1/file%AA.csv
当存档文件夹不存在时,应该创建它。 我怎样才能做到这一点? 目前我坚持这个:
find /livefolder/folder1/ -type d \( -name '*%AA' \) -exec mv {} /archivefolder/folder1/ +
但是我需要对存在的每个子文件夹执行此操作。有没有办法对所有子文件夹递归执行此操作?
我希望有人能指出我正确的方向。 提前致谢!
正如 Barmer 和 Renaud 在评论中提到的,您可以使用 rsync。如果使用 --relative
选项时 subdirectories
不存在,它将在路径中创建它。但是您需要存在父目录(不幸的是,在您的情况下 archivefolder
)。无论如何,您可以使用 mkdir -p
创建它(-p
只会创建一个目录,如果它不存在)。
rsync
命令将如下所示:
rsync -a --relative livefolder/./folder1/file%AA.csv archivefolder
relative
将根据您提供的 source
在 destination
中设置路径。
即等于
rsync [options] livefolder/folder1/file%AA.csv archivefolder/folder1/file%AA.csv
我们应该在 rsync 命令 (rsync -a --relative livefolder/./folder1/file%AA.csv
) 的源路径中的 livefolder
之后使用 .
。这意味着在给定的目标路径中,rsync 将以 /folder1/file%AA.csv
格式复制(即遵循源中 .
之后提到的层次结构)。因此,这将在 archivefolder
.
folder1/file%AA.csv