Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用终端从目录中的多个文件中删除所有非ASCII字符_Linux_Ubuntu_Terminal_Directory_Ascii - Fatal编程技术网

Linux 使用终端从目录中的多个文件中删除所有非ASCII字符

Linux 使用终端从目录中的多个文件中删除所有非ASCII字符,linux,ubuntu,terminal,directory,ascii,Linux,Ubuntu,Terminal,Directory,Ascii,我在一个目录中有多个.fa文件,所有这些文件都有非ASCII字符。我已经搜索了类似问题的答案,但没有什么是我所需要的 我希望能够在Linux终端中给出一个命令,该命令将重写目录中的所有文件,并保存删除的非ASCII字符 我试过了 for file in * do perl -pi 's/[^[ascii:]]//g' *; done for file in *; do sed -e 's/[\[\]()-+;:,.//'; done filelist=`ls` for file in $fi

我在一个目录中有多个.fa文件,所有这些文件都有非ASCII字符。我已经搜索了类似问题的答案,但没有什么是我所需要的

我希望能够在Linux终端中给出一个命令,该命令将重写目录中的所有文件,并保存删除的非ASCII字符

我试过了

for file in * do perl -pi 's/[^[ascii:]]//g' *; done

for file in *; do sed -e 's/[\[\]()-+;:,.//'; done

filelist=`ls` for file in $filelist do sed -e 's/[\[\]();:.,+-//g' {$file}

for file in `ls` do sed -e 's/[\[\]();:.,+-//g'; done
都有各种各样的错误。因此,我必须在代码语法中遗漏一些东西

注: *fa文件类似于txt文件,可以在终端或任何文本编辑器中打开,因此它不是文件组成


干杯。

您的循环正在指定一个从未使用过的变量名<代码>用于*中的文件;执行perl-pi的//[^[ascii:]//g'$file”;完成可能会起作用。其他语法疯狂。请尝试在检查您的代码。还有<如果文件名中嵌入空格,则code>filelist=`ls`构造可能会导致问题。祝你好运,^ascii部分似乎是这个建议中的问题。我注意到还有另一个语法问题。您需要学习如何仔细阅读文档。您需要
/[^[:ascii:]//g'
(我想;-)(注意
ascii
前面的“opening”冒号)。祝你好运,这行不通。不管有没有附加:仍在试图找到一种不使用perl的方法。好的,在
sed
中试试。您的
sed
是否支持
-i
(就地)选项?使用
sed-i-n'p'testFile
进行测试时,应该保持文件不变(但是重新编写它,并更改
ls-l
列表上的日期/时间)。因此(在测试后,您可以获得
testFile
的干净副本(仅在您可以承受丢失的文件上工作!),请尝试
使用*;执行sed-i's/[^[:ascii:]///g'$file“;done
。将帮助您了解
sed
的读写功能。如果仍然存在问题,请使用
sed--version;uname-srv
的输出进行回复。祝您好运!