【发布时间】:2014-04-13 14:30:16
【问题描述】:
我正在尝试使用 Unix/AIX find 命令传送到 head 命令来返回目录中的第一个文件并将其分配给变量。但是,我的所有尝试都导致所有找到返回的文件都被分配给变量而没有应用 head 命令。
这是我的三个尝试:
Attempt 1:
$first_file = `/usr/bin/find $my_path -type f -name $potential_file_names | head -n1`;
Attempt 2:
$first_file = `/usr/bin/find $my_path -type f -name $potential_file_names '|' head -n1`;
Attempt 3:
$first_file = `/usr/bin/find $my_path -type f -name $potential_file_names \\| head -n1`;
$potential_file_names 变量是一个带有通配符的字符串,用于返回目录中格式为“fileXXX.txt”的任何文件,其中“XXX”是一个三位数字。
$potential_file_names = 'file???.txt';
第一次尝试不起作用,因为 Perl 在返回错误“sh[2]: 0403-057.
第一次尝试输出:
file001.txt
file002.txt
file003.txt
file004.txt
file005.txt
第二次和第三次尝试也失败了。他们的错误是,“sh[2]: |: not found.”
第二次和第三次尝试的输出与第一次尝试相同。
是否可以使用通过管道传输的 find 命令返回我正在搜索的目录中的第一个文件(在我的例子中是“file001.txt”?
更新 我应该提到文件名可能不以 001 开头,所以我需要最旧的文件。这些文件是按顺序创建的,因此使用 find 和管道获取第一个文件到 head -n1 可以在脚本外部的命令行中使用。它必须是最旧/第一个文件,因为稍后我将在脚本中使用循环删除文件,这需要为每次迭代找到最旧/第一个文件。
谢谢。
【问题讨论】:
-
你能发布你的实际
$potential_file_names吗?如果我用"*.csv"尝试你的第一个版本,它就像一个魅力。