假设我有目录:
mydir1
mydir2
mydir3
mydir4
包含以 开头的文件abcd
我想将所有以 开头的文件移动abcd
到父目录。我该怎么做?
以下是我玩过的内容:
for file in pwd; mv *abcd ../
答案1
cd 到父目录,然后:
for f in */abcd*;
do mv $f ./
done
这将匹配等mydir1/abcdfoo
,mydir2/abcdbar
并将它们移动到 pwd(即父目录)。如果您只想查找名为 mydir* 的目录,您可以指定
for f in mydir*/abcd*;
do mv $f ./
done
你也可以这样做
find . -name "abcd*" -type f -exec mv {} ./ \;
查找所有名为 abcd* 的常规文件(不是目录)并将它们移动到 pwd。 find 从 find 命令后指定的目录(在本例中为“。”)开始递归查找。 您可以使用绝对路径,例如:
find /path/to/the/parent/dir -name "abcd*" -type f -exec mv {} /path/to/the/destination/dir/ \;
警告:我刚试的时候就注意到了这一点。如果不同目录中有多个同名文件,例如 mydir1/abcdfoo、mydir2/abcdfoo 等等,除了一个文件之外,其他文件都将被覆盖,父目录中只剩下一个 abcdfoo 文件。