Shell 如果包含文件,请将整个文件夹移动到新目录中

Shell 如果包含文件,请将整个文件夹移动到新目录中,shell,unix,grep,cd,Shell,Unix,Grep,Cd,我有一个目录 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

我有一个目录

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

迄今为止的代码:

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)

这假设两个目录
test2
complete
处于同一级别。

谢谢。代码假设完整目录存在于test2内部还是外部?代码假设
complete2
test2
内部。如果在外部,则代码将进一步简化。我看到此输出mv./file1完成mv./file3完成,但完整文件为空。。
while IFS= read -rd '' d; do
   [[ -f $d/1.txt ]] && echo mv "$d" complete
done < <(find test2 -type d -print0)
find test2 -type d -print0 |
while IFS= read -rd '' d; do [ -f "$d/1.txt" ] && echo mv "$d" complete; done