Linux 使用终端从目录中的多个文件中删除所有非ASCII字符
我在一个目录中有多个.fa文件,所有这些文件都有非ASCII字符。我已经搜索了类似问题的答案,但没有什么是我所需要的 我希望能够在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
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
的输出进行回复。祝您好运!