搜索、重命名和 mv 目录和子目录中的所有文件

search and rename and mv all files from directories and subdirectories

我有很多文件30k directories, 21k files txt 个同名文件的目录和子目录

     ├── cases__in_africa
        │   ├── 2020/10/01.txt
        │   ├── 2020/10/02.txt
        │   ├── 2020/10/03.txt
        │   └── 2020/10/04.txt
        ├── death_in_africa
        │   ├── 2020/10/01.txt
        │   ├── 2020/10/02.txt
        │   ├── 2020/10/03.txt
        │   └── 2020/10/04.txt
2926 directories, 21646 files

我想搜索很多子目录中的所有文件,而不是将它们重命名为其他唯一名称以将它们移动到其他目录。

此命令不显示重复文件

find . -name "*.txt" -exec mv  "{}" ./all \;

如果您正在寻找顺序命名,您可以这样做,假设目标目录 all 确实存在于您的当前目录中。:

for file in $(find ./ -type f -name "*.txt"); do ((count++)) ; mv $file ./all/${count}.txt; done

我觉得这很有用https://askubuntu.com/questions/1003554/how-to-rename-all-jpg-files-in-all-subdirs-wich-contains-dash-in-linux

find -name '*.txt' -exec bash -c 'mv  "{}" "$RANDOM.txt"' \;