使用bash将foldername重命名为filename

时间:2017-07-07 16:27:38

标签: linux bash rename

我想使用文件夹名称重命名文件。

这:

├── foo01
│   └── bar.png
│   └── bar.txt
├── foo02
│   └── bar.png
│   └── bar.txt
└── foo03
    └── bar.png
    └── bar.txt

应该是这样的:

├── foo01
│   └── foo01.png
│   └── foo01.txt
├── foo02
│   └── foo02.png
│   └── foo02.txt
└── foo03
    └── foo03.png
    └── foo03.txt

我找不到办法做到这一点。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

使用 Perl 的独立重命名命令:

library(data.table)
file_list <- list.files("c:/temp/files/",full.names = TRUE)
import_files <- lapply(file_list,read.csv,stringsAsFactors =FALSE)
rbinded_files <- na.omit(rbindlist(import_files,idcol="file"))
dcast(rbinded_files,file1 ~file,fun=max, na.rm=TRUE)

  file1    1    2    3    4    5    6
1  adam adam adam adam adam adam adam
2   Roy  Roy <NA>  Roy  Roy <NA> <NA>
3   Sam <NA>  Sam  Sam <NA> <NA> <NA>

输出:

foo01/bar.png renamed as foo01/foo01.png
foo01/bar.txt renamed as foo01/foo01.txt
foo02/bar.png renamed as foo02/foo02.png
foo02/bar.txt renamed as foo02/foo02.txt
foo03/bar.png renamed as foo03/foo03.png
foo03/bar.txt renamed as foo03/foo03.txt

如果一切正常,请删除选项rename -n 's|([^/]*)/[^/]*\.(.*)$|$1/$1.$2|' */*