【问题标题】:How to convert to a zero byte file?如何转换为零字节文件?
【发布时间】:2010-01-11 05:48:08
【问题描述】:

嗨,

在 unix 中,我的目录中有许多文件。 我想将所有文件更改为零字节文件。 这可能在单个命令行上吗?

例如:

-rw-r--r--   1 sumanma  dev          434 Jan  8 14:36 pprbc_NL.cpp
-rw-r--r--   1 sumanma  dev          488 Jan  8 14:37 pprbc_TreeBuild.cpp
-rw-r--r--   1 sumanma  dev          783 Jan  8 14:37 pprbc_UPDwm.cpp

我想把这些改成

-rw-r--r--   1 sumanma  dev          0 Jan  8 14:36 pprbc_NL.cpp
-rw-r--r--   1 sumanma  dev          0 Jan  8 14:37 pprbc_TreeBuild.cpp
-rw-r--r--   1 sumanma  dev          0 Jan  8 14:37 pprbc_UPDwm.cpp

我正在使用tcsh

【问题讨论】:

标签: unix shell command-line


【解决方案1】:

是的,你可以。

试试这个

for i in *
do
 echo -n > $i
done

(假设这里是 bash,但基本思想是回声)。

编辑:一个班轮(bash)。您将需要多行版本中不需要的分号等。

 for i in * ; do echo -n > $i ; done

编辑:如果您在使用 tcsh 时遇到问题,您可以随时调用 bash 来运行这样的单行程序

 bash -c 'for i in * ; do echo -n > $i ; done'

【讨论】:

  • 正如我所说我需要在命令行上这不是那么有用。我可以编写脚本,但我想知道这个命令行技巧是什么。
  • 在命令行中将其作为单行输入,它将按您的意愿工作。您不必将其设为脚本。
  • ` for i in test*fdef do echo -n >$i done i: 未定义变量。 `
  • for i in ;做回声 -n > $i; done 绝对可以在 bash 中使用,只是对其进行了测试。你使用 bash 吗?你错过了吗?在 * 之后(或在您的情况下测试fdef)?
  • [28]> for i in test*fdef; do echo -n > $i; done; for: Command not found. i: Undefined variable. done: Command not found. 我有 tcsh
【解决方案2】:

我无法立即想到一个简单的 tcsh 单行代码。

这是一个三线:

foreach i (*)
  cat /dev/null > $i
end

您可以在命令行中输入它,也就是说,它不必是脚本。不幸的是,出于单线目的,并且与 sh 系列不同,csh 派生的 shell 按行解析控制结构,而不是按管道解析。这意味着foreach i (*); echo $i; end 将不起作用。

当然,您可以通过为一行切换 shell 来实现单行:

sh -c 'for i in *; do cat /dev/null > $i; done'

【讨论】:

    【解决方案3】:
    for file in *
    do
       [ -f "$file" ] && >"$file"
    done
    

    【讨论】:

    • 这是一个不错的 sh 脚本,但他使用的是 csh 派生的 shell,这根本不起作用。
    【解决方案4】:

    你可以使用一个文件

    >file.cpp
    

    对于不止一个,您需要一个 for 循环,正如其他人已经描述的那样。如果当前目录中有目录,则会收到错误消息。

    for f in *;do >$f;done
    

    避免这种使用

    for f in *;do [ -f $f ] && >$f;done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 2018-08-20
      • 2012-01-12
      • 2021-10-19
      • 1970-01-01
      相关资源
      最近更新 更多