【问题标题】:How to copy multiple files in directory and move each into their correct directory如何复制目录中的多个文件并将每个文件移动到正确的目录中
【发布时间】:2018-03-02 22:31:45
【问题描述】:

Unix shell ksh

我创建了一个文件列表,目前正在尝试将每个文件复制到正确的路径。

(mylist)
-1111
-2222
-3333
-4444
-5555

当前目录 /sample/dir/未知/

-1111fileneeded.txt
-2222fileneeded.txt
-3333fileneeded.txt
-4444fileneeded.txt
-5555fileneeded.txt
-6666dontneed.txt
-7777dontneed.txt
-8888dontneed.txt
...etc

每个文件的前 4 个字符与其需要去的正确路径相匹配。

/sample/dir/1111/
/sample/dir/2222/
/sample/dir/3333/
/sample/dir/4444/

这就是我目前拥有的..

for i in `cat mylist`
do echo "$i"
 find /sample/dir/unknown/mylist* 

这是我有点卡住并试图弄清楚需要做什么才能将每个文件移动到正确目录的地方。

【问题讨论】:

  • 您使用的是什么平台和外壳?
  • 抱歉,是的,我正在使用 Shell
  • /Which/ 外壳? bash,csh,tcsh,sh,...?
  • unix shell ksh.

标签: path directory find copy cat


【解决方案1】:

这应该可以工作

#!/bin/ksh
while IFS=\| read -r line; do
   dir=`echo $line | cut -c 2-5`
   mv "$line /sample/$dir/$line"
done > filelist.txt

IFS 是转义特殊字符,以防万一。

cut -c 2-5 将所有字符从 2 变为 5(因为文件名的开头有一个破折号)

如果还有什么不明白的地方请告诉我。

【讨论】:

  • 非常感谢!
  • 如果我的回答对您有帮助,您可以投票/接受吗?
  • 嗨,威尔,我接受了它,但我不能对此表示赞同,因为我还没有足够的代表来做这件事。但是非常感谢!
猜你喜欢
  • 2017-02-14
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 2017-08-14
相关资源
最近更新 更多