根据它们的匹配将文件夹移动到另一个文件夹

西蒙·B

我有一个这样的文本文件:

    Order,Site_ID
[email protected],AR-Slu

“订单”列包含要移到“ Site_ID”列中显示的相应文件夹(文本文件中的同一行)的文件夹的名称。这是仅移动一个文件夹的示例。在此示例中,我想将文件夹“ [email protected]”移动到文件夹“ AR-Slu”。表中包含的信息是文件夹的名称,但没有文件夹的路径信息。但是,这两个文件夹位于同一父文件夹中。有人会知道该怎么做吗?

斯蒂芬·查泽拉斯(Stephane Chazelas)

对于空格分隔的值

(与您问题的初始版本一样)

(cd /parent/folder && tail -n +2 | xargs -L 1 mv --) < file

tail是跳过标题。

使用-L 1对输入的每1行xargs运行一个mv命令,并将该行上单词作为参数传递给mv

对于xargs单词是用空格定界的(无论是全是空格还是仅空格和制表符取决于xargs实现),尽管它们xargs也可以识别"'并且\作为引用运算符可以用来对这些空格或彼此进行转义。

您还可以使用while readshell循环:

(
  cd /parent/folder || exit
  unset -v IFS
  read skip_header <&3
  ret=0
  while read src dst rest_ignored <&3; do
    mv -- "$src" "$dst" || ret=$?
  done
  exit "$ret"
) 3< file

同样,对于read和使用默认值$IFS(或之后unset IFS),单词之间用空格或制表符分隔。\可用于逃避这些错误或本身,或在下一条物理行上继续行。

对于CSV文件

如果该文件是CSV文件(值之间用,引号分隔,并且可能用引号引起来),则可以在ksh93Shell中运行该循环,并使用-Sread内置选项进行CSV解析:

#! /bin/ksh93 -
(
  cd /parent/folder || exit
  IFS=,
  read -S skip_header <&3
  ret=0
  while read -S src dst rest_ignored <&3; do
    mv -- "$src" "$dst" || ret=$?
  done
  exit "$ret"
) 3< file

您可以取消该-S选项,因此它也可以在其他POSIX shell中使用,例如bash只要文件中不使用CSV引号就可以使用。

或者,您可以使用CSV解析模块perl或其他脚本语言:

(cd /parent/folder && perl -C -MText::CSV -e '
  $c = Text::CSV->new;
  $ret = 0;
  $c->getline(STDIN); # skip header
  while (($src, $dst) = @{$c->getline(STDIN)}) {
    system "mv", "--", $src, $dst;
    $ret = 1 if $?;
  }
  exit $ret;') < file

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用sudo将文件夹移动到另一个文件夹

将整个文件夹从其父文件夹移动到另一个文件夹

将特定邮件从一个文件夹移动到另一个文件夹

根据列表将所有文件从一个文件夹移动到另一个文件夹

根据.txt文件中的部分模式将特定文件移动到另一个文件夹

如何将文件从模型文件夹移动到另一个文件夹?

将特定子文件夹中的文件移动到另一个子文件夹

将文件夹和子文件夹移动到另一个路径

如何将文件移动到vscode中的另一个文件夹?

如何将文件移动到PHP中的另一个文件夹

是否可以将Skype的文件/年表移动到另一个文件夹?

如何使用Java将文件移动到另一个文件夹?

批处理文件以将文件夹移动到另一个

将文件移动到磁盘上的另一个文件夹-Visual Studio

批量将文件移动到Windows中的另一个文件夹/目录?

批量将特定模式的文件移动到另一个文件夹

将文件移动到 Git Bash 上的另一个文件夹

将字符串数组元素与文件夹中的文件名进行比较,如果匹配将它们移动到另一个文件夹

根据文件名将多个文件从一个文件夹移动到另一个文件夹-骆驼

更新:根据文件扩展名将文件从一个文件夹移动到另一个文件夹

根据文件大小将xml文件从一个文件夹移动到另一个文件夹

如何将多个文件夹移动到另一个目录?

将NPM(Gulp)安装移动到另一个文件夹

将virtualenvs移动到另一个主机文件夹

PowerShell 将集合移动到 SCCM 中的另一个文件夹?

将应用程序移动到另一个文件夹

如何将数据移动到memsql中的另一个文件夹

将文件从一个文件夹从文本文件的文件名列表移动到另一个文件夹

Applescript如何将文件从一个文件夹移动到另一个文件夹。无法将整数类型错误