假设我有一个包含许多文件和目录的文件夹(不是实际的文件名,这就像垃圾桶目录,因此文件名完全是随机的,有些文件没有扩展名):
dir1/
dir2/
...
dirN/
file1
file2
...
fileM
现在我需要将此目录中的所有文件移动到dir1/
。也就是说,将file1
,file2
... fileM
移至dir1/
。最简单的方法是什么?
如果它们都是带扩展名的文件,则问题很简单,只有mv *.* dir1/
。但是如果有没有扩展名的文件,我不知道该怎么办。
答案 0 :(得分:5)
find . -type f -maxdepth 1 -exec mv {} dir1/ \;
答案 1 :(得分:1)
虽然find
是一个很好的解决方案,但这是另一种仅使用bash的解决方案:
for file in *; do [[ -f $file ]] && mv "$file" dir1; done
答案 2 :(得分:0)
Bash没有直接选择常规文件的方法。您必须使用find
。
也许zsh
也适合您。使用zsh
,您只需编写
mv *(.) dir1/
答案 3 :(得分:-2)
一种方式:
mv $(find * -maxdepth 0 -type f) dir1
另:
for file in *; do
if [ -f "$file" ]
then mv "$file" dir1
fi
done