我有一个.txt
文件,其中包含我想要从一个目录移动到另一个目录的文件夹列表。我看过很多关于此的帖子,但没有一个起作用。主要是因为它们使用的是 GNU 版本的mv
和xargs
。我发现这帖子正在做我想做的事情,但仅限于Linux。目前,我们使用最新版本的 TrueNAS Core,运行 FreeBSD 版本 12.2-RELEASE-p3
我尝试使用下面的代码,文件中的文件夹名称有字母、数字、空格、(
和)
:
while IFS= read -r file; do
mv Projects/"$file" Archives/PROJECT\ ARCHIVE\ 2020;
done < Projects/Archive_List_test.txt
它给了我这个输出:
to Archives/PROJECT ARCHIVE 2020/folder1: No such file or directory
: No such file or directoryE 2020/folder2
folder1 和folder2 是列表中的文件夹名称。对于我的测试,我只有 2 个文件夹,但实际上我需要移动大约 360 个文件夹
感谢您的时间。
答案1
下面的脚本似乎按预期工作。我们来测试一下下面的文件夹
admin@truenas:~/tmp $ ls -la
total 32
drwxr-xr-x 4 admin admin 6 Apr 2 14:15 .
drwxr-xr-x 4 admin admin 12 Apr 2 14:06 ..
-rw-r--r-- 1 admin admin 16 Apr 2 14:18 Archive_List_test.txt
drwxr-xr-x 3 admin admin 3 Apr 2 14:07 Archives
drwxr-xr-x 4 admin admin 4 Apr 2 14:19 Projects
-rwxr-xr-x 1 admin admin 130 Apr 2 14:17 script.sh
admin@truenas:~/tmp $ ls -la Archives/PROJECT\ ARCHIVE\ 2020
total 1
drwxr-xr-x 2 admin admin 2 Apr 2 14:15 .
drwxr-xr-x 3 admin admin 3 Apr 2 14:07 ..
admin@truenas:~/tmp $ ls -la Projects/
total 14
drwxr-xr-x 4 admin admin 4 Apr 2 14:19 .
drwxr-xr-x 4 admin admin 6 Apr 2 14:15 ..
drwxr-xr-x 2 admin admin 2 Apr 2 14:19 folder 1
drwxr-xr-x 2 admin admin 2 Apr 2 14:19 folder 2
admin@truenas:~/tmp $ cat Archive_List_test.txt
folder 1
folder 2
该脚本移动文件中列出的文件夹Archive_List_test.txt,从目录项目/到目录档案/项目\档案\ 2020/
admin@truenas:~/tmp $ cat script.sh
#!/bin/sh
while IFS= read -r file; do
mv "Projects/${file}" Archives/PROJECT\ ARCHIVE\ 2020/;
done <Archive_List_test.txt
admin@truenas:~/tmp $ ./script.sh
admin@truenas:~/tmp $ ls -la Projects/
total 13
drwxr-xr-x 2 admin admin 2 Apr 2 14:30 .
drwxr-xr-x 4 admin admin 6 Apr 2 14:15 ..
admin@truenas:~/tmp $ ls -la Archives/PROJECT\ ARCHIVE\ 2020
total 2
drwxr-xr-x 4 admin admin 4 Apr 2 14:30 .
drwxr-xr-x 3 admin admin 3 Apr 2 14:07 ..
drwxr-xr-x 2 admin admin 2 Apr 2 14:19 folder 1
drwxr-xr-x 2 admin admin 2 Apr 2 14:19 folder 2