我的文件是
1996-08-30T02.11.41.940_10
1997-03-04T17.24.17.650_17
1997-04-01T15.43.26.390_20
和文件夹是
1996-08-30T02.11.41.940_5.1
1997-03-04T17.24.17.650_5.0
1997-04-01T15.43.26.390_4.5
文件和文件夹位于相同的目录中。我想将文件移动到名称相同但扩展名不同的文件夹
前任:
文件 1996-08-30T02.11.41.940_10 应移至文件夹 1996-08-30T02.11.41.940_5.1
我试过这个,但没有用
for file in ./*T* ; do mv -v $file ${file%_*}; done
最佳答案
你非常接近:
$ for file in ./* ; do [ -f "$file" ] && mv -v "$file" "${file%_*}"*/; done
'./1996-08-30T02.11.41.940_10' -> './1996-08-30T02.11.41.940_5.1/1996-08-30T02.11.41.940_10'
'./1997-03-04T17.24.17.650_17' -> './1997-03-04T17.24.17.650_5.0/1997-03-04T17.24.17.650_17'
'./1997-04-01T15.43.26.390_20' -> './1997-04-01T15.43.26.390_4.5/1997-04-01T15.43.26.390_20'
笔记:
[ -f "$file" ]
这样我们只尝试移动常规文件,而不是目录。 ${file%_*}"*/
.根据问题描述,我们假设只有一个这样的目录。 关于shell - 将文件复制到父目录中具有相同名称但具有不同扩展名的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45892678/