如果包含文件,则将整个文件夹移动到新目录
Move the entire folder into new directory if it contains a file
我有一个目录
test2 内容如下:
file1
test.pdb
xyz.txt
1.txt
file2
test.pdb
xyz.txt
file3
test.pdb
xyz.txt
1.txt
我想将包含 1.txt 的文件夹(此处为文件 1 和文件 3)移动到名为 'complete' 的新目录中。如何操作?
期望的输出:
完成
file1
test.pdb
xyz.txt
1.txt
file3
test.pdb
xyz.txt
1.txt
测试2
file2
test.pdb
xyz.txt
到目前为止的代码:
find . -maxdepth 2 -name "*ionized.pdb" -print| sed "s|^\./||"
假设您正在使用 bash
,您可以从 test2/
的 父目录使用此命令:
while IFS= read -rd '' d; do
[[ -f $d/1.txt ]] && echo mv "$d" complete
done < <(find test2 -type d -print0)
一旦对输出感到满意,您可以在上面的命令中删除 mv
之前的 echo
。
如果不使用 bash
则使用此管道:
find test2 -type d -print0 |
while IFS= read -rd '' d; do [ -f "$d/1.txt" ] && echo mv "$d" complete; done
这假定目录 test2
和 complete
处于同一级别。
我有一个目录
test2 内容如下:
file1
test.pdb
xyz.txt
1.txt
file2
test.pdb
xyz.txt
file3
test.pdb
xyz.txt
1.txt
我想将包含 1.txt 的文件夹(此处为文件 1 和文件 3)移动到名为 'complete' 的新目录中。如何操作?
期望的输出:
完成
file1
test.pdb
xyz.txt
1.txt
file3
test.pdb
xyz.txt
1.txt
测试2
file2
test.pdb
xyz.txt
到目前为止的代码:
find . -maxdepth 2 -name "*ionized.pdb" -print| sed "s|^\./||"
假设您正在使用 bash
,您可以从 test2/
的 父目录使用此命令:
while IFS= read -rd '' d; do
[[ -f $d/1.txt ]] && echo mv "$d" complete
done < <(find test2 -type d -print0)
一旦对输出感到满意,您可以在上面的命令中删除 mv
之前的 echo
。
如果不使用 bash
则使用此管道:
find test2 -type d -print0 |
while IFS= read -rd '' d; do [ -f "$d/1.txt" ] && echo mv "$d" complete; done
这假定目录 test2
和 complete
处于同一级别。